Department Highest Salary - LeetCode
Department Highest Salary - LeetCode
Department Highest Salary - Table: Employee +--------------+---------+ | Column Name | Type | +--------------+---------+ | id | int | | name | varchar | | salary | int | | departmentId | int | +--------------+---------+ id is the primary key column for thi
leetcode.com
문제요약
부서 내 SALARY가 가장 높은 사람을 출력하라.
부서 내 SALARY가 가장 높은 사람이 여러명일 경우에는 모두 출력한다.
문제풀이
SELECT d.name AS Department
, e.name AS Employee
, Salary
FROM Employee e INNER JOIN Department d ON e.departmentID = d.id
WHERE (e.departmentId, Salary) IN
(SELECT departmentId, MAX(Salary)
FROM Employee
GROUP BY departmentId)
WHERE절 서브쿼리를 사용할 수 있다.
Employee 테이블에서 departmentId를 기준으로 GROUP BY를 수행하여 연봉이 가장 높은 departmentId와 연봉을 찾는다. Employee와 Department이 JOIN된 테이블에서 WHERE절 서브쿼리로 뽑은 departmentId와 연봉에 해당하는 것이 반환된다. (이 때, name은 고려사항이 아니다. WHERE절 서브쿼리에서 알 수 있는 것은 00부서에서 가장 큰 SALARY는 00[값]이다.)
FROM절에서 Employee와 Department 테이블을 JOIN해준다. 즉, JOIN된 테이블에서 반환된 departmentId와 연봉에 해당하는 행이 선택되게 된다.
'CODING TEST > SQL - 문제' 카테고리의 다른 글
[LEETCODE] 180. Consecutive Numbers - MySQL (0) | 2023.04.19 |
---|---|
[프로그래머스] 상품 별 오프라인 매출 구하기 / JOIN - MYSQL (0) | 2023.03.09 |
[HACKERRANK] OCCUPATIONS - MYSQL 풀이 (0) | 2023.01.24 |
[solvesql] 작품이 없는 작가 찾기 (0) | 2023.01.16 |
[프로그래머스] 조건에 맞는 도서 리스트 출력하기 - MySQL (0) | 2023.01.12 |