SQL 코드카타_05

수수수수퍼노인·2025년 10월 10일

SQL 코드카타

목록 보기
5/10
post-thumbnail

SQL 코드카타_Department Top Three Salaries

Department Top Three Salaries

문제 : Department Top Three Salaries

# 목적, 목표 : 부서별 top 3 연봉받는 직원의 부서명, 이름, 연봉 추출
# 필요한 컬럼 : e.name, d.name, e.salary
# 컬럼 조건 : 없음
# 사용할 테이블 : Employee, Department
# join key : e.departmentId = d.id
# 테이블 조건 : DR <= 3
# 필요한 그룹 : d.id
# 필요한 그룹 조건 : order by Salary desc
# 정렬 기준 : in any order
# 주의사항 : dense_rank

로직

  • 부서별 연봉 내림차순으로 dense_rank 구하기
  • dense_rank <=3만 추출하기
WITH A AS (  # 부서별 연봉 내림차순 dense_rank
SELECT d.name as Department, e.name as Employee, e.salary as Salary, DENSE_RANK() OVER(partition by d.id order by e.salary desc) as DR
FROM Employee e inner join Department d on e.departmentId = d.id)

SELECT Department, Employee, Salary
FROM A
WHERE DR <= 3 ;

새로 알게된 점

  • dense_rank() over
    • rank() over 처럼 같은 값을 가진 행들은 동일한 순위를 받음
    • rank() over와 달리, 다음 순위를 건너뛰지 않고 바로 이어짐
profile
화이팅구리

0개의 댓글