IT개발/Oracle Database2010. 9. 1. 07:01
오라클 - Top 쿼리 : 상위 몇개의 데이터만 출력을 원하는 경우

번호에 역순으로 출력하되 상위(Top) 3개 출력하는 구문…
SQL Server 의 경우)
Select Top 3 * From Memos Order By Num Desc

* Oracle의 경우는 다음과 같이 수행한다.

샘플 테이블 생성
SQL> create table Memos
  2  (
  3     Num Number(2) Primary Key,
  4     Name VarChar2(25) Not Null
  5  );

전체 데이터를 번호를 기준으로 내림차순 정렬
SQL> Select * from Memos Order By Num Desc;

눈에 보이지 않게 내부적으로 저장되는 고유 번호값 : rownum
SQL> Select rownum, Num, Name From Memos;
* rownum : 오라클 내부적으로 생성되는 데이터

Memos 테이블과 동일한 뷰 생성
SQL> Create Or Replace View vw_Memos
  2  As
  3     Select Num, Name From Memos Order By Num Desc;            * 정렬하고 싶은 값을 정의 한다.

뷰의 RowNum을 출력
SQL> Select RowNum, Num, Name From vw_Memos;

특정 테이블의 상위 N개를 출력 : 뷰와 RowNum을 활용
SQL> Select * From vw_Memos Where RowNum <= 3;

뷰를 인라인으로 포함 : 순서에 의해서 재정렬후에 호출해주는 개념...
SQL> Select RowNum, Num, Name From
  2  (
  3     Select Num, Name From Memos Order By Num Desc
  4  )
  5  Where RowNum <= 3;

Posted by 시티락