조건에 맞는 최상위 레코드 n개 혹은 최하위 레코드 n개를 조회하는 쿼리다. ROWNUM이라는 컬럼을 사용한다. ROWNUM은 조회된 행에 행번호를 1번부터 순서대로 부여하는 '의사컬럼'이다.
SELECT ROWNUM, COLUMN1, COLUMN2, COLUMN3 . . .
FROM (SELECT COLUMN1, COLUMN2, COLUMN3 . . .
FROM 테이블
ORDER BY 분석대상컬럼명 정렬방향)
WHERE ROWNUM <= N;
-- 직원들을 급여순으로 순위를 매겼을 때 1, 2, 3위 직원의 이름과 급여 조회
SELECT ROWNUM, FIRST_NAME, SALARY
FROM (SELECT FIRST_NAME, SALARY
FROM EMPLOYEES
ORDER BY SALARY DESC)
WHERE ROWNUM <= 3;
FROM절의 서브쿼리에서 직원이름, 급여를 조회하고 급여의 내림차순으로 정렬한다. 그 다음 메인쿼리에서 서브쿼리에서 조회된 테이블에 ROWNUM컬럼을 통해 순서대로 행번호를 부여한다. ROWNUM <= 3이라는 조건을 붙이면 상위 세 명의 이름과 급여를 조회할 수 있다.