ROWNUM조건이 SQL 구성요소들과 같이 사용될 때 수행되는 순서
1. FROM, WHERE 절
2. ROWNUM 조건
3. SELECT COLUMN LIST절
4. GROUP BY
5. HAVING
6. ORDER BY
=> Order by 절이 rownum 조건과 동일한 위치에 있다면, rownum 조건을 먼저 처리 한 후 order by가 수행된다.
CREATE TABLE T1
AS
SELECT rownum c1
FROM DUAL
CONNECT BY LEVEL <= 10000 ;
--SQL[1]
SELECT *
FROM ( SELECT c1, rownum as rnum
FROM T1
ORDER BY C1 desc
)
WHERE ROWNUM <= 5;
--결과
C1 RNUM
---------- ----------
10000 10000
9999 9999
9998 9998
9997 9997
9996 9996
=> 전제 데이터로 order by 를 수행 후 rownum을 처리한 결과
--SQL[2]
SELECT c1, rownum as rnum
FROM T1
WHERE ROWNUM <= 5
ORDER BY C1 desc;
--결과
C1 RNUM
---------- ----------
5 5
4 4
3 3
2 2
1 1
=> rownum의 사용위치에 따라, 전혀 다른 값이 추출되는 것을 확인 할 수 있다.