2-2-5. Top N 쿼리

박은서's avatar
Mar 01, 2026
2-2-5. Top N 쿼리

1. ROWNUM 슈도 칼럼

1️⃣ 슈도(Pseudo Column) 칼럼

1) 슈도 칼럼

  • 데이터베이스 시스템에서 제공하는 특별한 종류의 칼럼
  • 실제로 존재하는 데이터 아님
  • 가상의 칼럼을 만들어 쿼리에서 일반 칼럼처럼 사용 가능
  • 데이터베이스 작업을 더 효율적으로 만들고, 특정 정보에 쉽게 접근할 수 있게 해주는 유용한 도구로 활용됨

2) 슈도 칼럼의 특징

  • 시스템 생성
    • 데이터베이스 시스템에 의해 자동으로 생성되고 관리됨
  • 읽기 전용
    • 대부분의 경우, 값 변경 불가
  • 동적 값
    • 쿼리 실행 시 동적으로 값 할당

3) 슈도 칼럼 (오라클)

  • ROWNUM
    • 쿼리 결과의 각 행에 순차적인 번호 부여
  • ROWID
    • 각 행의 고유 식별자
  • LEVEL
    • 계층적 쿼리에서 트리 레벨 표시
  • CURRVAL, NEXTVAL
    • 시퀀스 관련 작업에 사용됨

4) 슈도 칼럼 (다른 데이터베이스 시스템)

  • SQL Server
    • @@ERROR, @@IDENTITY
  • MySQL
    • FOUND_ROWS(), ROW_COUNT()

2️⃣ ROWNUM

1) ROWNUM

  • 결과 집합에서 각 행에 고유한 번호 할당 (1부터 순차적으로 부여)
  • 쿼리 실행 순서에 따라 부여되므로 결과 집합의 행 순서가 중요한 경우 사용 가능
  • 특별한 형식 없고, 하나의 칼럼처럼 사용

2) ROWNUM

SELECT ROWNUM, EMPNO, ENAME, SAL FROM ( SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC );
ROWNUM
EMPNO
ENAME
SAL
1
7839
KING
5000
2
7788
SCOTT
3000
3
7902
FORD
3000
4
7566
JONES
2975
5
7698
BLAKE
2850

2. TOP

1️⃣ SQL Server에서 사용하는 TOP

1) TOP

  • SQL Server에서 결과 집합의 상위 N개의 행을 반환하는 데 사용되는 절
  • 결과 집합의 크기를 제한
  • 쿼리의 성능 최적화
  • 특정 수의 행만 선택할 때 매우 유용함

2) TOP 절의 예

SELECT TOP (3) EMPNO, ENAME, SAL FROM EMP WHERE DEPTNO = 20 ORDER BY SAL DESC;
EMPNO
ENAME
SAL
7902
FORD
3000
7788
SCOTT
3000
7566
JONES
2975

2️⃣ 오라클에서 사용하는 ROW LIMITING

1) ROW LIMITING

  • 오라클에서 결과 집합의 행 수를 제한하는 데 사용됨
  • 데이터베이스 쿼리의 효율성 높이는 데 도움
  • FETCH FIRSTOFFSET 절을 사용하여 결과 집합의 상위 N개의 행을 선택하거나 특정 위치에서부터 N개의 행 선택 가능

2) FETCH FIRST를 사용한 ROW LIMITING 절의 예

SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC FETCH FIRST 5 ROWS ONLY; // 상위 5개 행 선택하여 반환
EMPNO
ENAME
SAL
7839
KING
5000
7902
FORD
3000
7788
SCOTT
3000
7566
JONES
2975
7698
BLAKE
2850

2) OFFSET를 사용한 ROW LIMITING 절의 예

SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY; // 상위 5개 행 건너뛰고, 다음 5개 행 선택하여 반환
EMPNO
ENAME
SAL
7782
CLARK
2450
7499
ALLEN
1600
7844
TURNER
1500
7934
MILLER
1300
7654
MARTIN
1250
Share article