반응형
문제 출처 :
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 |