[SQL] Top N 쿼리
[SQL] Top N 쿼리
ROWNUM 슈도 컬럼
오라클의 ROWNUM은 컬럼과 비슷한 성격의 Pseudo Column으로서 SQL 처리 결과 집합의 각 행에 대해 임시로 부여되는 일련번호다. 테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용한다.
예제
예제에 사용되는 릴레이션은 아래와 같다.
EMP 릴레이션
- 쿼리
1
2
3
4
5
6
7
8
9
SELECT A.ENAME
, A.SAL
FROM (
SELECT ENAME
, SAL
FROM EMP
ORDER BY SAL DESC
) A
WHERE ROWNUM <= 3;
- 결과
ROW LIMITING 절
오라클은 12.1버전, SQL Server는 2012 버전부터 ROW LIMITING 절로 Top N 쿼리를 작성할 수 있다. ROW LIMITING 절은 ANSI 표준 SQL 문법이다. 아래는 ROW LIMITING 절의 구문이다. ROW LIMITING 절은 ORDER BY 절 다음에 기술하며, ORDER BY 절과 함께 수행된다. ROW와 ROWS는 구분하지 않아도 된다.
1
2
[OFFSET offset {ROW | ROWS}]
[FETCH {FIRST | NEXT} [{rowcount | percent PERCENT}] {ROW | ROWS} {ONLY | WITH TIES}]
- OFFSET offset : 건너뛸 행의 개수를 지정한다.
- FETCH : 반환할 행의 개수나 백분율을 지정한다.
- ONLY : 지정된 행의 개수나 백분율만큼 행을 반환한다.
- WITH TIES : 마지막 행에 대한 동순위를 포함해서 반환한다.
예제
예제에 사용되는 릴레이션은 아래와 같다.
EMP 릴레이션
- 쿼리
1
2
3
4
SELECT A.EMPNO
, A.SAL
FROM EMP
ORDER BY SAL, EMPNO FETCH FIRST 5 ROWS ONLY;
- 결과
읽어주셔서 감사합니다. 😊
Reference
SQL 전문가 가이드 - Kdata 한국데이터산업진흥원
This post is licensed under CC BY 4.0 by the author.


