스터디/학습일지

[SQL] 코드카타 풀이 Employees Whose Manager Left the Company

다다킴 2025. 6. 20. 09:50

1978. Employees Whose Manager Left the Company (20분 소요) 

https://leetcode.com/problems/employees-whose-manager-left-the-company/description/

이 표에는 직원, 급여, 관리자 ID에 대한 정보가 포함되어 있습니다. 일부 직원은 관리자가 없습니다(manager_id는 null입니다).
급여가 3만 달러 미만이고 매니저 퇴사한 직원의 ID를 찾아보세요. 매니저가 퇴사하면 직원 테이블에서 해당 정보가 삭제되지만, 보고서에는 퇴사한 매니저의 manager_id가 여전히 설정되어 있습니다. employee_id에서 주문한 결과 테이블을 반환합니다. 
** 번역기로 돌린거라 말이 안 맞을 수 있습니다. 

[문제풀이] 

문제의 테이블에서는 직원아이디, 이름, 매니저아이디, 급여로 나누어져있고 예시는 아래와 같았다. 

처음에는 employee_id를 그룹핑해서 manager_id가 Null값이고, 급여가 30000미만이었을 때 내용을 작성 하였지만 오답이었다

다시 문제 풀이를 진행하면, 먼저 select 절에는 출력이 되어야 하는 employee_id를 입력하고 
where절은 manager_id에서 employee_id가 없어야하고, 급여는 30000 미만이여야 하기 때문에  아래와 같이 입력하였다. employee_id에서 order by 결과 테이블을 반환해야 하므로 아래와 같이 정답이 처리가 되었다. (번역기에선 주문으로 되어 있었네;) 

select employee_id 
from Employees 
where manager_id not in (select employee_id 
                        from Employees)
and salary < 30000 
order by employee_id;

추가로 다른 사람들이 답을 한 것 중에 self join 방법으로 처리를 한 내용도 있다. with도 있었는데 주말에 한 번 시도를 해봐야겠다. 

select e.employee_id
from employees e
    left join employees m on e.manager_id = m.employee_id
where e.salary < 30000 and m.employee_id is null and e.manager_id is not null
order by e.employee_id