SQL每日一题(2020-05-19)

2020-06-02  本文已影响0人  扎西的德勒

题目:

Employee 表包含所有员工和他们的经理。每个员工都有一个 Id,并且还有一列是经理的 Id。

image

给定 Employee 表,请编写一个SQL查询来查找至少有5名直接下属的经理。对于上表,您的SQL查询应该返回:

image

注意: 没有人是自己的下属。

参考答案:

数据库版本:Server version: 8.0.20 MySQL Community Server - GPL

建表语句

create table dailytest_20200519
(
    id         int,
    name       varchar(20),
    department varchar(20),
    managerid  int
);

数据准备

insert into dailytest_20200519 values (101,'John','A',null);
insert into dailytest_20200519 values (102,'Dan','A',101);
insert into dailytest_20200519 values (103,'James','A',101);
insert into dailytest_20200519 values (104,'Amy','A',101);
insert into dailytest_20200519 values (105,'Anne','A',101);
insert into dailytest_20200519 values (106,'Ron','B',101);

查询逻辑

select
       A.name
from dailytest_20200519 A
inner join (
    select
           managerid
    from dailytest_20200519
    group by managerid
    having count(1) >= 5) B
on A.id = B.managerid;

附:
题目来源:https://mp.weixin.qq.com/s/e0DhRtQJ0F9sjfZhW9KaIQ

上一篇 下一篇

猜你喜欢

热点阅读