susinlee 님의 블로그
Top Three Salaries 본문
[문제]
https://datalemur.com/questions/sql-top-three-salaries
[풀이]
RANK() : 동일한 값이 있을 경우, 같은 순위를 부여하고 다음 순위를 건너뜀 (1, 1, 3, 4 ...)
DENSE_RANK() : 동일한 값이 있을 경우 같은 순위를 부여하지만, 다음 순위를 건너뛰지 않음 (1, 1, 2, 3 ...)
ROW_NUMBER() : 동일한 값이 있어도 무조건 순차적으로 증가 (고유한 순위)
1. 두 테이블을 병합한 후 랭크함수를 사용하여 부서별로 급여 순으로 랭크를 매겨준다.
2. 랭크를 통해 상위 3명만 필터링한다.
[코드]
SELECT
department_name
, name
, salary
FROM
(
SELECT
e.name
, d.department_name
, e. salary
, DENSE_RANK() OVER(PARTITION BY e.department_id ORDER BY salary DESC) AS salary_rnk
FROM employee e
JOIN department d
ON e.department_id = d.department_id
) sub
WHERE salary_rnk <= 3
ORDER BY department_name, salary DESC, name
'코드카타 > SQL, Pandas' 카테고리의 다른 글
Active User Retention (0) | 2025.03.08 |
---|---|
Top 5 Artists (0) | 2025.03.08 |
Teams Power Users (0) | 2025.03.08 |
Average Post Hiatus (Part 1) (0) | 2025.03.08 |
Page With No Likes (0) | 2025.03.07 |