이 문제의 경우 관리자를 1명 이상의 다른 직원이 보고하는 직원으로 간주합니다.
모든 관리자의 ID와 이름, 관리자에게 직접 보고하는 직원 수, 보고서의 평균 연령을 가장 가까운 정수로 반올림하는 솔루션을 작성하시오.
employee_id 순으로 정렬된 결과 테이블을 반환합니다.
결과 형식은 다음 예제와 같습니다.
Input:
Employees table:
+-------------+---------+------------+-----+
| employee_id | name | reports_to | age |
+-------------+---------+------------+-----+
| 9 | Hercy | null | 43 |
| 6 | Alice | 9 | 41 |
| 4 | Bob | 9 | 36 |
| 2 | Winston | null | 37 |
+-------------+---------+------------+-----+
Output:
+-------------+-------+---------------+-------------+
| employee_id | name | reports_count | average_age |
+-------------+-------+---------------+-------------+
| 9 | Hercy | 2 | 39 |
+-------------+-------+---------------+-------------+
WITH A AS (
SELECT
reports_to,
AVG(age) AS average_age,
COUNT(*) AS reports_count
FROM Employees
GROUP BY reports_to
)
SELECT
E.employee_id,
E.name,
reports_count,
ROUND(average_age) AS average_age
FROM A
JOIN Employees AS E
ON A.reports_to = E.employee_id
ORDER BY employee_id
1. WITH문을 만든다.
2. 먼저 reports_to(관리자번호)를 기준으로 GROUP BY하기
3. AVG,COUNT를 구한다.
4. A테이블과 원본 테이블에서 employee_id와 reports_to를 연결해서 JOIN하면 name을 알 수 있다.
5. ORDER BY로 employee_id를 기준으로 한다.
'데이터엔지니어링 > SQL' 카테고리의 다른 글
leetcode - 1164번 문제 풀이 (0) | 2025.05.28 |
---|---|
solvesql - 제목이 모음으로 끝나지 않는 영화 (1) | 2025.05.27 |
leetcode - 1789번 문제 풀이 (1) | 2025.05.26 |
리트코드 : 1280. Students and Examinations (0) | 2025.05.01 |