우노
[Window Function] LeetCode 184번 “Department Highest Salary” 풀이 본문
SQL/Window Function
[Window Function] LeetCode 184번 “Department Highest Salary” 풀이
운호(Noah) 2022. 12. 11. 20:19문제 링크
풀이
각 부서에서 급여가 가장 높은 직원을 찾는 SQL 쿼리를 작성하면 됩니다.
Window Function과 JOIN을 사용해 해결할 수 있습니다.
먼저, 아래와 같은 서브쿼리를 작성합니다.
SELECT id, name, salary, departmentId, MAX(salary) OVER(PARTITION BY departmentId) AS max_salary FROM Employee
| id | name | salary | departmentId | max_salary | | -- | ----- | ------ | ------------ | ---------- | | 1 | Joe | 70000 | 1 | 90000 | | 2 | Jim | 90000 | 1 | 90000 | | 5 | Max | 90000 | 1 | 90000 | | 3 | Henry | 80000 | 2 | 80000 | | 4 | Sam | 60000 | 2 | 80000 |
이후, 해당 서브쿼리 테이블과 Department를 JOIN한 뒤,
WHERE을 통해 salary와 max_salary가 같은 데이터들을 걸러내면 됩니다.
전체 쿼리는 아래와 같습니다.
전체 쿼리
SELECT D.name AS Department, SUB.name AS Employee, SUB.max_salary AS Salary
FROM (
SELECT id, name, salary, departmentId,
MAX(salary) OVER(PARTITION BY departmentId) AS max_salary
FROM Employee
) SUB
JOIN Department AS D
ON SUB.departmentId = D.id
WHERE SUB.salary = SUB.max_salary
'SQL > Window Function' 카테고리의 다른 글
[Window Function] LeetCode 178번 “Rank Scores” 풀이 (0) | 2022.12.12 |
---|---|
[Window Function] LeetCode 185번 “Department Top Three Salaries” 풀이 (0) | 2022.12.11 |
[Window Function] LeetCode 180번 “Consecutive Numbers” 풀이 (0) | 2022.12.11 |
Comments