至少有5名直接下属的经理
sql
解决思路
从两个 Employee 表(分别为 e1、e2,e1 作为经理表,e2 作为员工表),使 e1.id = e2.managerId,然后通过 e1.id 分组,选出 count(e2.id)>=5(拥有员工数 >=5)的 e1.name 作为 name 返回 虽然时间不太好 题解思路:(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 表做连接操作,得到每个经理的名字。 SQL中JOIN(连接)学习笔记 SQL中的JOIN默认是什么连接
相关问题
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