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

简介: leetcode-SQL-570. 至少有5名直接下属的经理

题目

题目链接

表: 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 |
+------+

解题

方法一:子查询

1.找到出现大于等于5次的 经理id

2.根据经理id去查询名字

select name
from Employee
where id in(
    select managerId as id
    from Employee
    group by managerId
    having count(managerId)>=5
);

方法二:联结

一定要使用inner join,因为存在它们的经理id不在这个表里面,从而导致结果是null而不是空。

select b.name
from Employee as a
inner join Employee as b
on a.managerId=b.id
group by a.managerId
having count(a.managerId)>=5;
相关文章
|
8天前
|
SQL
leetcode-SQL-181. 超过经理收入的员工
leetcode-SQL-181. 超过经理收入的员工
24 0
|
8天前
|
SQL
leetcode-SQL-1731. 每位经理的下属员工数量
leetcode-SQL-1731. 每位经理的下属员工数量
20 0
|
8天前
|
SQL 算法 vr&ar
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
☆打卡算法☆LeetCode 181. 超过经理收入的员工 算法解析
|
数据库
LeetCode(数据库)- 上级经理已离职的公司员工
LeetCode(数据库)- 上级经理已离职的公司员工
103 0
|
数据库
LeetCode(数据库)- 每位经理的下属员工数量
LeetCode(数据库)- 每位经理的下属员工数量
69 0
|
数据库
LeetCode(数据库)- 仓库经理
LeetCode(数据库)- 仓库经理
82 0
|
数据库
LeetCode(数据库)- 至少有5名直接下属的经理
LeetCode(数据库)- 至少有5名直接下属的经理
83 0
|
8天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
12 0
|
8天前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
16 0