力扣高频SQL 50题(基础版)第十三题

力扣高频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;
结果截图

在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值