728x90
320x100
Top-N 쿼리
Top-N 쿼리는 말 그대로 상위(Top) N개의 행을 조회하는 쿼리이다.
기본 문법
-
오라클 데이터베이스는 ROWNUM 방식, 분석함수 방식, ROW LIMITNING 절 세 가지 방식의 Top-N쿼리를 사용할 수 있다.
15.1.1 ROWNUM 방식
ROWNUM 방식은 오라클 데이터베이스 전통적인 Top-N쿼리 방식이다. ORDER BY 절로 행을 정렬하고, 정렬된 행을 ROWNUM 슈도 칼럼으로 제한한다.
ex 1 )
SELECT empno, sal, ROWNUM AS rn
FROM emp;
ROWNUM 슈도 칼럼은 < 조건이나 <= 조건을 사용해야한다.
ex 2 )
SELECT empno, sal, ROWNUM AS rn
FROM emp
WHERE ROWNUM <= 2;
- emp 테이블에서 ROWNUM가 2 이하의 조건을 갖는 empno, sal, rn의 행을 출력한다.
ex 3 )
SELECT empno, sal, ROWNUM AS rn
FROM emp
WHERE ROWNUM <= 5
ORDER BY sal;
- WHERE절에서 ROWNUM 5개 이하 조건을 충족한 후 마지막에 ORDER BY 절에서 sal 순으로 정렬하면서 다음과 같은 결과가 출력이 된다. (SQL 실행순서를 알면 이해가 편하다.)
ex 4 ) 페이징 처리
VAR v_pr NUMBER; -- v_pr 한 페이지당 행의 개수
EXEC :v_pr := 5;
VAR v_pn NUMBER; -- v_pn 페이지 위치
EXEC :v_pn := 2;
SELECT empno, sal, rn
FROM (SELECT empno, sal, ROWNUM AS rn
FROM (SELECT empno, sal FROM emp ORDER BY sal, empno)
WHERE ROWNUM <= :v_pr * :v_pn)
WHERE rn >= (:v_pr * (:v_pn -1)) + 1;
- 한 페이지당 행의 개수 = 5, 페이지 위치 = 2 일 때 2번째 페이지에 6, 7, 8, 9, 10 행이 출력되는 개념이다.
728x90
320x100