[LeetCode-SQL 50] 185. Department Top Three Salaries

코린이·2025년 6월 28일

SQL 문제 풀이 (MySQL)

목록 보기
89/96

❓ 문제

Employee
+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| id           | int     |
| name         | varchar |
| salary       | int     |
| departmentId | int     |
+--------------+---------+

id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
departmentId는 부서 테이블의 ID에 대한 외래 키(참조 열)입니다.
이 테이블의 각 행은 직원의 ID, 이름 및 급여를 나타냅니다. 또한 해당 직원의 부서 ID도 포함되어 있습니다.

Department
+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
+-------------+---------+

id는 이 테이블의 기본 키(고유 값을 가진 열)입니다.
이 테이블의 각 행은 부서의 ID와 이름을 나타냅니다.

회사의 경영진은 회사의 각 부서에서 누가 가장 많은 돈을 버는지 알고 싶어합니다. 한 부서에서 고소득자는 해당 부서의 고유 급여 상위 3개에 속하는 직원을 의미합니다.

각 부서에서 고소득 직원을 찾는 솔루션을 작성합니다.

결과 테이블을 임의의 순서로 반환합니다.

자세한 문제 내용은 사이트 참고...


❗️ 문제 풀이

with tmp_tb as (
    select
        B.name as Department
        , A.name as Employee
        , A.salary as Salary
        , dense_rank() over(partition by B.name order by A.salary desc) as dept_rank
    from Employee A join Department B
        on A.departmentId = B.id
)
select
    Department
    , Employee
    , Salary
from tmp_tb
where dept_rank <= 3
;

🔗 Reference

https://leetcode.com/problems/department-top-three-salaries/?envType=study-plan-v2&envId=top-sql-50

0개의 댓글