106번.The Number of Employees Which Report to Each Employee

- 문제:
한 명 이상에게 보고 받는 매니저의 employee_id, name, reports_count(보고자 수), average_age(보고자의 평균 나이)를 구하여라.- 조건:
출력 시 employee_id 오름차순 정렬.
평균 나이는 반올림하여 정수만 출력.

셀프조인을 생각하지 못하고 group by, having, count로만 푸는 과정에서 시간을 매우 많이 낭비했다.
단일 테이블 계층문제는 self-join을 통해 필터링한 뒤에 연산하는게 가장 쉽다
SELF-JOIN 을 통해 계층 분석을 준비한다. ON절에서 reports_to = employee_id 를 통해 보고자를 한 명 이상 갖는 employee 즉, 매니저들의 정보만 조회한다.
group by와 집계함수를 통해 매니저별 보고자 정보를 조회한다.
order by 조건을 만족하는 테이블을 조회한다.
select A.employee_id employee_id,
A.name name,
count(B.name) reports_count,
round(avg(B.age)) average_age
from employees A join employees B
on A.employee_id = B.reports_to
group by A.employee_id
order by employee_id
기억하자. 단일 테이블 계층문제 시 SELF-JOIN을 사용하면 ON 절 필터링까지 사용하여 문제를 간단하게 풀어낼 수 있다.