Language/SQL
[Oracle] 행 개수 제한
_윤
2023. 9. 25. 16:18
728x90
1. ROWNUM
상위 N개 행을 구하고 싶을 때, 다음과 같이 사용
SELECT *
FROM TABLE
WHERE ROWNUM <= N;
다만, 문제의 조건에 따라 특정 열을 기준으로 정렬 후 상위 N개의 행을 사용해야 한다면 다음과 같은 형태로 사용.
SELECT COL1
FROM (SELECT COL1
FROM TABLE
ORDER BY COL1 desc)
WHERE ROWNUM <= N;
2. FETCH FIRST {N} ROWS ONLY
OFFSET 스킵행 {ROW | ROWS} FETCH {FIRST | NEXT} {N | N PERCENT} {ROW | ROWS} {ONLY | WITH TIES}
- 스킵행 : 상위 N개 행 스킵 후 다음 행 부터 출력
- {ROW | ROWS} : ROW, ROWS 사용에 따른 차이 X
- {FIRST | NEXT} : FIRST, NEXT 사용에 따른 차이 X
- 스킵할 행이 없다면 FETCH 구문부터 사용
- {N | N PERCENT} : 상위 N개, 상위 N PERCENT로, 사용 목적에 맞게 선택 필요
- {ONLY | WITH TIES} : ONLY는 딱 지정한 개수의 행만 반환, WITH TIES는 제일 마지막 행에 대해 같은 순위를 갖는 모든 행 출력
EXPR 1) 상위 10개 행 추출, 상위 5개 행 스킵 O
SELECT *
FROM TABLE
OFFSET 5 ROWS FETCH FIRST 10 ROWS ONLY;
EXPR 2) 상위 10개 행 추출, 상위 행 스킵 X
SELECT *
FROM TABLE
FETCH FIRST 10 ROWS ONLY;
EXPR 3) 상위 10% 행 추출
SELECT *
FROM TABLE
FETCH FIRST 10 PERCENT ROWS ONLY;
EXPR 4) 상위 10개 행 동일한 순위 포함하여 추출
SELECT *
FROM TABLE
FETCH FIRST 10 ROWS WITH TIES;
728x90
반응형