
문제
- 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 을 사용한 전형적인 문제. (사원의 직속 상사 구하기, 쇼핑몰 회원의 추천인 정보 찾기 등..)
