본문 바로가기
문제풀이/SQL(My sql)

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

by kime2 2024. 7. 22.
출처

 

문제

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

 

배운점

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