力扣数据库570. 至少有5名直接下属的经理

一、数据

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

Employee表:

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

二、目标

找到符合条件的经理的名字。

三、分析

因为当managerId为空时,则该员工为经理,managerId不为空时,managerId就是该员工经理的id,所以可以通过自连接将经理id和为该经理的员工id联合起来,再通过分组函数、count函数对每个经理的员工进行计数,最后通过HAVING语句进行筛选出至少有5名直接下属的经理。

四、代码

select e1.name as name 
from Employee e1
join Employee e2
on e1.id = e2.managerid -- 将经理id和为该经理的员工id联合起来
group by e1.id,e1.name  -- 对经理进行分组
having count(e1.id) >= 5; -- 筛选出至少有5名直接下属的经理

五、小结

主要考察自连接语法的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值