728x90
728x90
아래의 문제는 LeetCode의 SQL문제 내용이며 코드는 직접 푼 내용입니다.
184. Department Highest Salary
문제상황 및 주어진 테이블
요구사항
각 부서마다 가장 연봉이 높은 직원과 그 연봉을 출력하라.
결과물
해석
아웃풋에 부서이름도 있기 때문에 무조건 조인을 할텐데..
그리고 그냥 group by로 각 부서마다 가장 연봉이 높은 직원을 뽑아봤다.
하지만 문제는 그룹마다라서 그룹마다 한명의 직원만 뽑힌다. 연봉이 같은 경우를 카운트하지 못하는 문제가 있었다.
SELECT DepartmentId, MAX(Salary)
FROM Employee
Group by DepartmentId
결과
역시나 조인을 했다.
같은 경우를 여러가지를 뽑기 위해서 in 을 썼다.
SELECT
Department.name AS 'Department',
Employee.name AS 'Employee',
Salary
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId, Salary) IN
(SELECT DepartmentId, MAX(Salary) FROM Employee Group by DepartmentId)
배운점
- in : 하나가 아니라 여러개인 경우
참고
참고한 블로그 링크
728x90
반응형
'코딩 테스트' 카테고리의 다른 글
[HankerRank] The PADS | CONCAT, SUBSTR (0) | 2021.05.31 |
---|---|
[Python] 코딩테스트 고득점Kit | DFS/BFS1 - 타겟넘버 (0) | 2021.05.28 |
[LeetCode] 197. Rising Temperature | DATEDIFF (0) | 2021.05.27 |
[LeetCode] 182. Duplicate Emails | Having count(*)>=2 (0) | 2021.05.27 |
[LeetCode] 181. Employees Earning More Than Their Managers | Self JOIN(셀프조인) (0) | 2021.05.27 |
[Python] 코딩테스트 고득점Kit | 스택큐4 - 주식가격 (0) | 2021.05.27 |