Leetcode 185. Department Top Three Salaries
윈도우 함수를 활용해서 풀었는데 여러 문제가 있었다.
일단 두 부서별로 랭킹을 구해야 했다.
그래서 혹시 PARITION BY와 함께 쓰면 되지 않을까 하고 아래와 같이 써봤다.
SELECT DENSE_RANK() OVER (ORDER BY Salary PARTITION BY departmentId) AS ranking
FROM Employee
이유를 찾기 위해 가장 작은 테이블부터 쿼리를 돌려봤는데, 가장 낮은 Salary를 받는 사람에게 더 높은 랭킹이 주어지고 있었다.
RANK라는 이름에 현혹돼서 당연히 알아서 높은 Salary부터 따져볼 거라는 이상한 착각을 하고 있었다.
그래서 코드에 DESC 조건을 추가해줬다.
SELECT DENSE_RANK() OVER (ORDER BY Salary DESC)
FROM Employee
그러고 나서도 답이 나오지 않았는데 PARTITION BY에 미련이 남아서 ORDER BY 앞에 적어봤다.
SELECT DENSE_RANK() OVER (PARTITION BY DepartmentID ORDER BY Salary DESC)
FROM Employee