570. 至少有5名直接下属的经理

Posted 梦想是能睡八小时的猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了570. 至少有5名直接下属的经理相关的知识,希望对你有一定的参考价值。

【题目】

表: Employee

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| department  | varchar |
| managerId   | int     |
+-------------+---------+
Id是该表的主键列。
该表的每一行都表示雇员的名字、他们的部门和他们的经理的id。
如果managerId为空,则该员工没有经理。
没有员工会成为自己的管理者。

 

编写一个SQL查询,查询至少有5名直接下属的经理 。

以 任意顺序 返回结果表。

查询结果格式如下所示。

 

示例 1:

输入:
Employee 表:
+-----+-------+------------+-----------+
| id  | name  | department | managerId |
+-----+-------+------------+-----------+
| 101 | John  | A          | None      |
| 102 | Dan   | A          | 101       |
| 103 | James | A          | 101       |
| 104 | Amy   | A          | 101       |
| 105 | Anne  | A          | 101       |
| 106 | Ron   | B          | 101       |
+-----+-------+------------+-----------+
输出:
+------+
| name |
+------+
| John |
+------+

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/managers-with-at-least-5-direct-reports


【思路】

子查询 having count id重复5次以上的

 

【代码】

SELECT name
FROM Employee
WHERE id in(
    SELECT managerId
    FROM Employee
    GROUP BY managerId
    HAVING count(managerId)>=5
)

 

LeetCode:Database 14.至少有5名直接下属的经理

要求:给定 Employee 表,请编写一个SQL查询来查找至少有5名直接下属的经理的姓名。

Employee 表:

+------+----------+-----------+----------+
|Id    |Name 	  |Department |ManagerId |
+------+----------+-----------+----------+
|101   |John 	  |A 	      |null      |
|102   |Dan 	  |A 	      |101       |
|103   |James 	  |A 	      |101       |
|104   |Amy 	  |A 	      |101       |
|105   |Anne 	  |A 	      |101       |
|106   |Ron 	  |B 	      |101       |
+------+----------+-----------+----------+
Employee 表包含所有员工和他们的经理。每个员工都有一个 Id,并且还有一列是经理的 Id

Result Table:

+-------+
| Name  |
+-------+
| John  |
+-------+

分析:
1.通过经理id分组,找出大于五个直接下属的经理id
2.通过经理id找到经理姓名

#1.方法1
select a.Name from
Employee a
join
Employee b
on a.Id=b.ManagerId
group by b.ManagerId
having count(b.ManagerId)>=5
#2.方法2
select Name from
Employee 
where Id in(select ManagerId from 
Employee 
group by ManagerId
having count(ManagerId)>=5)

以上是关于570. 至少有5名直接下属的经理的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:Database 14.至少有5名直接下属的经理

LeetCode(数据库)- 至少有5名直接下属的经理

每日SQL打卡​​​​​​​​​​​​​​​DAY 5丨至少有5名直接下属的经理难度中等

如何找到每个经理下的所有员工

SQL:至少有 10 名员工的部门名称

女人多吃甜食会招来阴道炎