본문 바로가기
코딩 테스트

[LeetCode] 184. Department Highest Salary | IN

by 카프리썬_ 2021. 5. 27.
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 : 하나가 아니라 여러개인 경우

참고 

참고한 블로그 링크

반응형