도움이 되실꺼 같아 퍼왔네요 ^^
오라클 사용자 팁
제목: 간단한 ROW_NUMBER() Analytic function 의 예제
ROW_NUMBER()는 각 PARTITION내에서 ORDER BY절에 의해 정렬된 순서로 유일한
값을 돌려주는 함수로 ROWNUM과는 관계가 없습니다.
예제) 직업별로 급여 합계를 계산해서 급여 합계가 많은 순으로
가장 많은 직업 3개만 출력하는 예제 입니다.
-- job 컬럼 포맷 설정
SQL> COL JOB FORMAT a10;
-- 기존의 SQL방법
SQL> SELECT job, sal
FROM
(SELECT job, SUM(sal) sal
FROM emp
GROUP BY job
ORDER BY sal DESC)
WHERE rownum < 4
JOB SAL
---------- ----------
MANAGER 33925
ANALYST 6000
PRESIDENT 5000
-- Analytic function ROW_NUMBER()을 사용하는 방법
SQL> SELECT job, sal
FROM
(SELECT job, SUM(sal) sal,
ROW_NUMBER() OVER (ORDER BY SUM(sal) DESC) num
FROM emp
GROUP BY job )
WHERE num < 4
JOB SAL
---------- ----------
MANAGER 33925
ANALYST 6000
PRESIDENT 5000