오라클 사용자 팁 에서 퍼왔슴다~ 0 0 2,246

by 현영 [2006.03.09 11:38:33]


도움이 되실꺼 같아 퍼왔네요 ^^

 

오라클 사용자 팁
 
제목: 간단한 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  

 

 
 
 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입