데이터베이스/Today's Query
[Today's Query] 1998년도 연봉 상위 10% 사원의 정보 조회(2025/01/03)
연화
2025. 1. 6. 18:34
문제
to_date가 1998년도인 연봉 상위 10% 사원의 정보 조회
WITH salary_ranked AS (
SELECT
a.emp_no,
a.first_name,
a.last_name,
b.salary,
percent_rank() OVER (ORDER BY b.salary DESC) AS percentile
FROM
employees AS a
JOIN (
SELECT
emp_no,
salary
FROM
salaries
WHERE
YEAR(to_date) = 1998 -- 연도 필터링
) b ON a.emp_no = b.emp_no
)
SELECT
emp_no,
first_name,
last_name,
salary,
percentile
FROM
salary_ranked
WHERE
percentile <= 0.1
ORDER BY
salary DESC;
💡 WITH절(가상테이블)
서브쿼리를 만들고 재사용 가능한 공통 테이블 표현식(Common Table Expression, CTE)을 정의하는 방법
💡PERCENT_RANK함수
인수로 지정한 값의 그룹내 상대적 위치를 백분위수 순위로 반환하는 함수 (순위 퍼센트 반환)