2013년 8월 1일 목요일

Oracle 12c(오라클12c) Top-n, Fetch 사용하기, Row Limiting 예제

오라클12c(Oracle 12c) Top-n, Fetch 사용하기, Row Limiting 
 
오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷  실무전문 강의) 
 
Top-n 구는 정렬된 데이터에서 Top에서 Bottom으로 정해진 숫자만큼 데이터를 추출 하는 것이다.  MySQL이라면 다음과 같이 Limit 구를 사용하여 Top-n을 구현했었다.
 
 
SELECT *
FROM   table
ORDER BY column
LIMIT 0 , 40
 
 
Oracle 12c의 Top-N 쿼리의 기본 문법은 다음과 같다.
 
 
[ OFFSET offset { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ]
{ ROW | ROWS } { ONLY | WITH TIES } ]
 
 
위 MySQL의 Limit 구문처럼 정통적인 Top-N 쿼리 구현은 간단하다.
 
Select * from mytable order by num
 
num
----
1
1
2
2
3
3
4
4
.
.
10
10
 
 
Select num
From mytable
Order by num
Fetch first 3 rows only;
 
10
10
9
 
다음 쿼리를 보자
 
Select num
From mytable
Order by num
Fetch first 3 rows with ties;
 
10
10
9
9
 
위 SQL ties 구문에 의해 같은 9라는 값을 가진 다른 데이터도 같이 선택된다.
 
다음 예문을 보자
 
Select num
From mytable
Order by num
Fetch first 10 percent rows only;
 
1
1
 

댓글 없음:

댓글 쓰기