문제
- LeetCode SQL 문제
1731. The Number of Employees Which Report to Each Employee / Easy
- 문제 내용 : [링크]
내가 작성한 Query
select m.employee_id, m.name, count(*) as reports_count, round(avg(e.age), 0) as average_age from employees e join employees m on e.reports_to = m.employee_id group by m.employee_id, m.name order by m.employee_id
Employees
테이블을 SELF JOIN
해서 'reports_to'를 1개 이상 받는 사원의 정보를 출력하는 방식으로 접근.
reports_to
와 employee_id
가 같은 값을 기준으로 JOIN
해 준다. 이렇게 되면 report_to
를 1개 이상 받는 사원의 정보만 출력할 수 있다. (INNER JOIN
이므로)
이후 employee_id
, name
별로 GROUP BY
를 통해 그룹핑 해 준다.
count(*) as reports_count
를 통해 보고 받는 count 수를 구한다.
round(avg(age), 0) as average_age
를 통해 보고를 하는 사람들의 평균 age를 구할 수 있다.
🌟 SELF JOIN
을 사용한 전형적인 문제. (사원의 직속 상사 구하기, 쇼핑몰 회원의 추천인 정보 찾기 등..)