前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
570.至少有5名直接下属的经理
表:Employee
列名 | 类型 |
---|---|
id | int |
name | varchar |
department | varchar |
managerId | int |
id 是此表的主键(具有唯一值的列)。
该表的每一行表示雇员的名字、他们的部门和他们的经理的id。如果managerId为空,则该员工没有经理。
没有员工会成为自己的管理者。
编写一个解决方案,找出至少有五个直接下属的经理。
我那不值一提的想法:
- 首先梳理表内容,题干一共给了一张员工表,记录了员工id,员工姓名,部门以及对应经理的id。
- 其次分析需求,需要找到至少有五个直接下属的经理
- 对于这类题,我想到的第一个思路就是自连接,首先将两张表连接,其次设置条件e1.id = e2.managerId,这样就使得e1表是经理表,e2表是员工表,然后设置条件count(*) > = 5,得到我们的最终结果
select e1.name
from Employee e1 ,Employee e2
where e1.id = e2.managerId
group by e1.id
having count(*) >=5
结果:
总结:
能运行就行。