WITH tbl_ranking AS (
SELECT
RANK() OVER(partition by d.dept_no ORDER BY s.salary DESC) AS ranking,
CONCAT(e.first_name, ' ', e.last_name) AS name,
s.salary,
d2.dept_name
FROM
(
SELECT emp_no, MAX(salary) AS salary
FROM salaries
GROUP BY emp_no
) AS s
JOIN
employees AS e ON e.emp_no = s.emp_no
JOIN
dept_emp AS d ON e.emp_no = d.emp_no
JOIN
departments AS d2 ON d2.dept_no = d.dept_no
)
SELECT *
FROM tbl_ranking
WHERE ranking <= 3;
💡 RANK() 함수 - partition by 속성으로 그룹화, ORDER BY 속성으로 정렬하여 순위를 매길 수 있다.
부서별 그룹화, 연봉 높은 순 정렬한 순위로 가상 테이블을 만들고, 가상 테이블의 ranking 속성을 조건으로 3위까지 출력함
'데이터베이스 > Today's Query' 카테고리의 다른 글
[Today's Query] 부서 매니저였던 사원들의 현재 직급을 출력(2025/01/10) (0) | 2025.01.10 |
---|---|
[Today's Query] 부서 이동 경험이 있는 사원들의 현재 부서를 조회 (2025/01/07) (0) | 2025.01.07 |
[Today's Query] 부서 평균 연봉보다 연봉이 높은 사원을 조회 (2025/01/06) (0) | 2025.01.06 |
[Today's Query] 재직 중인 개발부서 사원의 최신 연봉 정보를 출력 (2025/01/04) (0) | 2025.01.06 |
[Today's Query] 1998년도 연봉 상위 10% 사원의 정보 조회(2025/01/03) (1) | 2025.01.06 |