문제풀이/SQL(My sql)

[문제풀이] Leet code - Managers with at Least 5 Direct Reports

kime2 2024. 7. 22. 12:43
출처

 

문제

5명 이상의 부하 직원이 있는 관리자를 찾는 솔루션을 작성합니다.
순서에 관계없이 결과 테이블을 반환합니다.

문제에 대한 해석

5명 이상을 관리하는 매니저의 이름을 조회함

 

풀이(MYSQL)

-- 1. 매니저의 ID를 조회
with manager as (
    select id 
    from Employee
    where id in (select managerID from Employee)
),
-- 2. 5명 이상 관리하는 매니저를 조회
con as (
    select managerId
    from Employee 
    where managerId in (select id from manager )
    group by managerId
    having count(*) >= 5
)
-- 3. 해당 매니저의 이름 조회
select name
from Employee
where id in (select managerId from con)
-- managerID를 기준으로 그룹화할 경우 5개 이상일때 : 5명이상을 관리하는 매니저
with manager as (
    select managerID
    from Employee
    group by managerID
    having  count(*) >= 5
)
-- 의 이름
select e.name
from manager m join Employee e
on m.managerID = e.id

 

배운점

합칠 수 있는 쿼리는 최대한 합치기