[Leetcode] Department Top Three Salaries
정답
SELECT
t1.name Department,
t2.name Employee,
t2.salary Salary
FROM Department t1
JOIN (
SELECT departmentId, name, salary
FROM (
SELECT
departmentId, name, salary,
DENSE_RANK() OVER (PARTITION BY departmentId ORDER BY salary DESC) rank_
FROM Employee
) t
WHERE rank_ <= 3
) t2
ON t1.id = t2.departmentId
✅ Point
- top three unique salaries per department 구하기
- department 별로
- 가장 높은 salary 를 가진
- top 3 뽑기 (인원 3명 x, salary가 3개의 unique 한 값이 나오도록)
DENSE_RANK
로 중복값을 포함한 순위 표시- 해당 값 <=3 을 만족하면 위 top three unique 값을 만족