文章目录
- 力扣高频SQL 50题(基础版)第十三题
- 570. 至少有5名直接下属的经理
- 题目说明
- 思路分析
- 实现过程
- 准备数据
- 实现方式
- 结果截图
力扣高频SQL 50题(基础版)第十三题
570. 至少有5名直接下属的经理
题目说明
表: Employee
±------------±--------+
| Column Name | Type |
±------------±--------+
| id | int |
| name | varchar |
| department | varchar |
| managerId | int |
±------------±--------+
id 是此表的主键(具有唯一值的列)。
该表的每一行表示雇员的名字、他们的部门和他们的经理的id。
如果managerId为空,则该员工没有经理
。
没有员工会成为自己的管理者。
编写一个解决方案,找出至少有五个直接下属的经理。
以 任意顺序 返回结果表。
思路分析
先把两张表拼接在一起,从表中找出符合条件的经理id和名字,然后把得到的结果重新命名一个表,这个表为t1,再从t1中查出我们要的name列。
实现过程
准备数据
Create table If Not Exists Employee (id int, name varchar(255), department varchar(255), managerId int)
Truncate table Employee
insert into Employee (id, name, department, managerId) values ('101', 'John', 'A', 'None')
insert into Employee (id, name, department, managerId) values ('102', 'Dan', 'A', '101')
insert into Employee (id, name, department, managerId) values ('103', 'James', 'A', '101')
insert into Employee (id, name, department, managerId) values ('104', 'Amy', 'A', '101')
insert into Employee (id, name, department, managerId) values ('105', 'Anne', 'A', '101')
insert into Employee (id, name, department, managerId) values ('106', 'Ron', 'B', '101')
实现方式
with t1 as (select e2.managerId,e1.name from Employee e1 join Employee e2 on e1.id = e2.managerId group by e2.managerId having count(e2.managerId) >= 5)
select name from t1;