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名直接下属的经理