ORDERBY_NUM() 함수

설명

ORDERBY_NUM() 함수는 ROWNUM 혹은 INST_NUM() 함수와 함께, 결과 행들의 개수를 제한하는 목적으로 사용된다. 단, 차이점은 ORDER BY 절 뒤에 결합되어 사용되고, 이미 정렬을 수행한 결과에 대해 순서를 부여한다는 점이다.

즉, ORDER BY 절이 포함된 SELECT 문장에서 조건절에 ROWNUM을 이용하여 일부 결과 행들만 조회하는 경우, ROWNUM이 먼저 적용된 후 ORDER BY에 의한 정렬이 수행된다. 반면, ORDERBY_NUM() 함수를 이용하여 일부 결과 행들만 조회하는 경우, ORDER BY에 의한 정렬이 이루어진 결과에 대해서 ROWNUM이 적용된다.

구문

FOR ORDERBY_NUM()

예제

다음은 history 테이블에서 3위에서 5위까지의 선수 이름과 기록을 조회하는 예제이다. .(demodb)

--Ordering first and then limiting rows using FOR ORDERBY_NUM()

SELECT athlete, score FROM history

ORDER BY score FOR ORDERBY_NUM() BETWEEN 3 AND 5;

  athlete               score

============================================

  'Luo Xuejuan'         '01:07.0'

  'Rodal Vebjorn'       '01:43.0'

  'Thorpe Ian'          '01:45.0'

 

--Limiting rows first and then Ordering using ROWNUM

SELECT athlete, score FROM history

WHERE ROWNUM BETWEEN 3 AND 5 ORDER BY score;

  athlete               score

============================================

  'Thorpe Ian'          '01:45.0'

  'Thorpe Ian'          '03:41.0'

  'Hackett Grant'       '14:43.0'