TOP N 쿼리

HELLO_DINO·2022년 11월 1일
0

SQL전문가가이드

목록 보기
23/28

ROWNUM 슈도 칼럼

테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용한다.

한 건의 행만 가져오고 싶을 때는

SELECT ENAME FROM EMP WHERE ROWNUM <= 1;
SELECT ENAME FROM EMP WHERE ROWNUM < 2;

로 작성한다.

두 건 이상의 N 행을 가져오고 싶을 때는 ROWNOM = N;처럼 사용할 수 없다.

SELECT ENAME FROM EMP WHERE ROWNUM <= N;
SELECT ENAME FROM EMP WHERE ROWNUM < N + 1;

Oracle는 정렬이 완료된 후 출력 되는 것이 아니라서 ORDER BY 절과 WHERE 절의 ROWNUM 조건을 같이 사용해도 두 조건으로는 원하는 겨로가를 얻을 수 없다.

SELECT ENAME, SAL
	FROM (SELECT ENAME, SAl
    		FROM EMP
         ORDER BY SAL DESC)
WHERE ROWNUM <= 3;

ROW LIMITING 절

ROW LIMITING 절은 ORDER BY 절 다음에 기술하며, ORDER BY 절과 함께 수행된다. OROW와 ROWS는 구분하지 않아도 된다.

[OFFSET offset {ROW | ROWS}]FETCH {FIRST | NEXT} [{rowcount | percent PERCENT}] {ROW | ROWS} {ONLY | WITH TIES}]

OFFSET offset : 건너뛸 행의 개수를 지정한다.
FEFCT : 반환할 행의 개수나 백분율을 지정한다.
ONLT : 지정된 행의 개수나 백분율만큼 행을 반환한다.
WITH TIES : 마지막 행에 대한 동순위를 포함해서 반환한다.

SELECT EMPNO, SAL FROM EMP ORDER BY SAL, EMPNO FETCH FIRST 5 ROWS ONLY;

SELECT EMPNO, SAL FROM EMP ORDER BY SAL, EMPNO OFFSET 5 ROWS;

0개의 댓글