leetcode | sql | 第570题 | 至少有5名直接下属的经理

该篇文章介绍了如何通过SQL查询,从两个Employee表中找出经理,他们的下属数量大于等于5。使用JOIN操作连接两个表,然后按经理ID分组,应用HAVING子句筛选出符合条件的经理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

sql

解决思路

  1. 从两个 Employee 表(分别为 e1、e2,e1 作为经理表,e2 作为员工表),使 e1.id = e2.managerId,然后通过 e1.id 分组,选出 count(e2.id)>=5(拥有员工数 >=5)的 e1.name 作为 name 返回
  2. 虽然时间不太好
  3. 题解思路:(1)将两份 Employee 表用 join 操作连接。Manager 表代表经理,Report 表代表下属,每对 Manager.Id=Report.ManagerId 的情况代表此经理的一名下属。再根据 Manager.Id 分组,对 Report.Id 求和得到每个经理对应的下属数量。将此表命名为 ReportCount,再在其中筛选 cnt>=5 的数据项即可(2)上述查询在分组后,可以直接使用 having 字句筛选下属大于 5 的经理(3)上面的查询为了得到经理的名字,首先对两份 Employee 表进行了连接,但是我们其实可以先对经理进行筛选,再通过连接操作得到经理的名字。要筛选员工数大于等于 5 的经理,直接将 Employee 表根据 ManagerId 进行分组,每组中的 Id 即为每个经理对应的每个下属,取下属数量大于等于 5 的条目。将此表命名为 Manager,随后与 Employee 表做连接操作,得到每个经理的名字。
  4. SQL中JOIN(连接)学习笔记
  5. SQL中的JOIN默认是什么连接

相关问题

  1. sql 终于出了我做的出来的题目
# Write your MySQL query statement below
select e1.name as name 
from employee e1,employee e2
where e1.id=e2.managerId
group by e1.id
having count(e2.id)>=5 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值