SELECT ranking.Department,
ranking.Employee,
ranking.Salary
FROM
(SELECT d.name as Department ,
e.name as Employee,
e.salary as Salary,
DENSE_RANK() over (PARTITION BY e.departmentID ORDER BY e.salary DESC) as rank
FROM Employee as e
INNER JOIN Department as d
on e.departmentId=d.id) as ranking
WHERE ranking.rank<=3
Hard 문제이지만 윈도우 함수를 쓰면 쉽게 풀 수 있다.
반응형
'SQL' 카테고리의 다른 글
MySQL 시간 차이 계산 (0) | 2022.08.19 |
---|---|
SQL 쿼리 문법/실행 순서 (0) | 2022.08.15 |
리트코드(LeetCode) MySQL-Consecutive Numbers (0) | 2022.08.09 |
해커랭크(HackerRank) MySQL-The Report (0) | 2022.08.09 |
SQL - 행별로 다른 누적합을 구하고 싶다면 (0) | 2022.08.08 |