Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

ROW_NUMBER

문법

MAIN

row_number::=
Description of row_number.gif follows

그림 설명


참 조 :

"Analytic Functions " for information on syntax, semantics, and restrictions

목적

MAIN

ROW_NUMBER함수는 분석 함수이다. 이 함수는 1로 시작하는 order_by_clause에서 지정된 행의 순위 순서로, 적용되는 각 행에 unique 순서를 할당한다.(파티션에서 각 행 또는 쿼리에 의해서 반환되는 각 행)

지정된 범위에 대하여 ROW_NUMBER값을 검색하는 쿼리 내의 ROW_NUMBER를 이용하는 중첩하는 서브쿼리에의해, inner 쿼리의 결과로 부터 정확한 행의 부분집합을 얻을수 있다. 이 방법으로 함수를 이용하면, top-N,bottom-N,inner-N 리포트를 실행할 수 있다. 일관된 결과에 대하여, 쿼리는 결정적인 소트 순서를 확보할수 있다.

expr에 대하여 ROW_NUMBER 또는 다른 분석 함수를 이용할수 없다. 중첩 분석 함수를 이용할수 없으나, expr에 대하여 다른 이미있는 함수를 이용할수 있다.

ROW_NUMBER()는 각 PARTITION내에서 ORDER BY절에 의해 정렬된 순서로 유일한 값을 돌려주는 함수로 ROWNUM과는 관계가 없다.

예제

MAIN

oe.employees 테이블에서 각 부분에 대하여, 다음 예제는 종업원의 고용일 각 순서에 대하여 number를 할당한다.

SELECT department_id, last_name, employee_id, ROW_NUMBER()
   OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
   FROM employees;

DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_ID
------------- ------------------------- ----------- ----------
           10 Whalen                            200          1
           20 Hartstein                         201          1
           20 Fay                               202          2
           30 Raphaely                          114          1
           30 Khoo                              115          2
           30 Baida                             116          3
           30 Tobias                            117          4
           30 Himuro                            118          5
           30 Colmenares                        119          6
           40 Mavris                            203          1
. . .
          100 Popp                              113          6
          110 Higgins                           205          1
          110 Gietz                             206          2

ROW_NUMBER is a nondeterministic function. However, employee_id is a unique key, so the results of this application of the function are deterministic.


참 조:

FIRST_VALUE and LAST_VALUE for examples of nondeterministic behavior

The following inner-N query selects all rows from the employees table but returns only the fifty-first through one-hundredth row:

SELECT last_name FROM 
   (SELECT last_name, ROW_NUMBER() over (order by last_name) R FROM employees)
   WHERE R BETWEEN 51 and 100;