题目
表: Employee
| Column Name | Type |
|---|---|
id | int |
| name | varchar |
| department | varchar |
| managerId | int |
在 SQL 中,id 是该表的主键列。 该表的每一行都表示雇员的名字、他们的部门和他们的经理的id。 如果managerId为空,则该员工没有经理。 没有员工会成为自己的管理者。
查询至少有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 |
题解
sql
-- 直接下级 按照上级id分组 大于等于5及为结果
SELECT `e`.`name`
FROM (SELECT `managerId`
FROM `Employee`
GROUP BY `managerId`
HAVING COUNT(1) >= 5) `t`
INNER JOIN `Employee` `e` ON `t`.`managerId` = `e`.`id`1
2
3
4
5
6
7
2
3
4
5
6
7