반응형
Notice
Recent Posts
Recent Comments
Link
개발은 처음이라 개발새발
JOIN 서브쿼리 퀴즈[LeetCode] 본문
반응형
https://leetcode.com/problems/department-highest-salary/
Input:
Employee table:
+----+-------+--------+--------------+
| id | name | salary | departmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Jim | 90000 | 1 |
| 3 | Henry | 80000 | 2 |
| 4 | Sam | 60000 | 2 |
| 5 | Max | 90000 | 1 |
+----+-------+--------+--------------+
Department table:
+----+-------+
| id | name |
+----+-------+
| 1 | IT |
| 2 | Sales |
+----+-------+
Output:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Jim | 90000 |
| Sales | Henry | 80000 |
| IT | Max | 90000 |
+------------+----------+--------+
예제 테이블을 살펴보면, employee와 department 테이블이 있고 이 두가지를 합해서 각부서의 이름과, 직원, 샐러리를 보여주는 것인데 salary를 보니 각 부서의 가장 높은 연봉인걸 확인할 수 있습니다. 결국 각부석의 가장 높은 샐러리를 받는 사람의 부서명, 이름, 샐러리를 구해야 합니다. 이를 구하기 위해서 우선적으로 departmentid별 가장 높은 샐러리를 구해야 합니다.
SELECT departmentid, MAX(salary)
FROM Employee
GROUP BY departmentid
____________________________________________________
output:
| departmentid | MAX(salary) |
| ------------ | ----------- |
| 1 | 90000 |
| 2 | 80000 |
네 이렇게 부서id별 가장 높은 샐러리를 구했다면 이를 활용해야 겠죠? 이 구문을 테이블처럼 활용해 join을 해보려고 합니다. 그리고 부서명이 필요하기 때문에 Department 테이블 역시 join을 답을 구해보겠습니다.
SELECT D.name as Department, E.name as Employee, DH.max_salary as Salary
FROM Employee AS E
JOIN (SELECT departmentid, MAX(salary) AS max_salary
FROM Employee
GROUP BY departmentid) AS DH
ON E.departmentid = DH.departmentid AND E.salary = DH.max_salary
JOIN Department AS D
ON E.departmentid = D.id
_________________________________________________________________________________
output:
| Department | Employee | Salary |
| ---------- | -------- | ------ |
| IT | Jim | 90000 |
| Sales | Henry | 80000 |
| IT | Max | 90000 |
반응형
'mysql' 카테고리의 다른 글
JOIN구문에 들어가는 BETWEEN [해커랭크] (0) | 2023.06.25 |
---|---|
MySQL WITH문 활용[해커랭크] (0) | 2023.06.11 |
Top Earners 서브쿼리 퀴즈 [해커랭크] (1) | 2023.06.06 |
서브쿼리 간단정리 (0) | 2023.05.31 |
서브쿼리를 활용한 DELETE [LeetCode] (0) | 2023.05.30 |