반응형

문제 출처 :


https://leetcode.com/problems/department-highest-salary/



알고리즘 분석 :


문제 해결에 필요한 사항

1. JOIN

2. Subquery


JOIN을 통해 우선 Employee와 Department 테이블을 합쳐준다.


그리고 나서 WHERE 절에서 subquery를 이용하는데


우리가 JOIN에서 나온 테이블에서 구해야 하는 것은 각 Department의 최대 Salary이다.


따라서 (ep.DepartmentId, ep.Salary)를 표현해줄 것이고


이는 Group화된 Employee 테이블에서 DepartmentId, MAX(Salary)를 찾아주면 그것이 해당하는 조건이 된다.





소스 코드 : 


1
2
3
4
5
6
7
8
9
10
11
# Write your MySQL query statement below
SELECT dp.Name AS Department, ep.Name AS Employee, ep.Salary AS Salary
FROM Employee AS ep
JOIN Department AS dp ON ep.DepartmentId = dp.Id
WHERE
    (ep.DepartmentId, ep.Salary) IN
    (
        SELECT DepartmentId, MAX(Salary)
        FROM Employee
        GROUP BY DepartmentId
    )
cs

반응형

'Applied > Database' 카테고리의 다른 글

[Programmers] 중복 제거하기  (0) 2019.09.22
[Programmers] 고양이와 개는 몇 마리 있을까  (0) 2019.09.09
[177번] Nth Highest Salary  (0) 2019.06.10
[183번] Customers Who Never Order  (0) 2019.06.06
[176번] Second Highest Salary  (0) 2019.06.04