Leet Code MYSQL

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

难度中等56收藏分享切换为英文接收动态反馈

SQL架构

表: Employee

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

编写一个SQL查询,查询至少有5名直接下属的经理 

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入: 
Employee 表:
+-----+-------+------------+-----------+
| id  | name  | department | managerId |
+-----+-------+------------+-----------+
| 101 | John  | A          | None      |
| 102 | Dan   | A          | 101       |
| 103 | James | A          | 101       |
| 104 | Amy   | A          | 101       |
| 105 | Anne  | A          | 101       |
| 106 | Ron   | B          | 101       |
+-----+-------+------------+-----------+
输出: 
+------+
| name |
+------+
| John |
+------+

本题是一个考察数据库连接的题目,在力扣上标注的难度为中等,其实不难

毕竟数据库的题目都不难(手动狗头)

主要考察的知识点:子查询匹配、group by+having 聚合函数

思路:先查询出至少有5名直接下属的经理(子查询),再到主表中匹配查询到经理的name

代码1

select name from Employee as t1
join (
    select managerId from Employee  group by managerId
    having count(managerId)>=5
)as t2 where t1.id =t2.managerId

代码2

# Write your MySQL query statement below
select name from Employee where id in
(
    select managerId from Employee  group by managerId
    having count(managerId)>=5
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值