[Database] 16. 통계 쿼리 함수(RANK)

백하림's avatar
Feb 28, 2025
[Database] 16. 통계 쿼리 함수(RANK)

순위 구하기

1. rank() over()

💡
rank() over(order by) '별칭' 숫자가 중복되면 중복된 숫자만큼 + 되어 뒤에 순위에 적용
select empno, ename, sal, rank() over(order by sal desc) '순위' from emp;
notion image

2. dense_rank() over()

💡
dense_rank() over(order by) '별칭' 숫자가 중복되어도 +1만 한다.
select empno, ename, sal, dense_rank() over(order by sal desc) '순위' from emp
notion image

3. row_number() over()

💡
row_number() over(order by) '별칭' 숫자가 중복되지 않고 차례대로 ++1 된다.
select empno, ename, sal, row_number() over(order by sal desc) '순위' from emp;
notion image
-- 2. 문제 (EMP 테이블에서, 본인의 월급과 상사의 월급의 합의 순위를 내림차순으로 구하시오) SELECT 나, 상사, 내월급, 상사월급, 월급의합, RANK() OVER (ORDER BY 월급의합 DESC) AS '순위' FROM ( SELECT e1.ename AS '나', e2.ename AS '상사', e1.sal AS '내월급', e2.sal AS '상사월급', e1.sal + IFNULL(e2.sal, 0) AS '월급의합' FROM emp e1 LEFT OUTER JOIN emp e2 ON e1.mgr = e2.empno ) nemp;
notion image
Share article

harimmon