[오라클 SQL] 오라클 ROWNUM을 이용하여 TOP n문 구현하는 방법


안녕하세요.

 

오늘은 오라클 에서 TOP n문 구현하는 방법에 대해서 설명해 드리려고 합니다.

 

그 중에서도, ROWNUM을 이용하여 TOP n문을 구현해 보려고 해요.

 

참고로, 오라클에서는 TOP이라는 예약어를 지원하지 않습니다. 그래서 TOP 예약어 대신 다른 문법들을 이용해서 TOP n문을 구현해야 하는데요.

 

오늘은 여러가지 방법들 중 하나인 ROWNUM을 이용하여 TOP n문을 구현하는 방법에 대해서 살펴보도록 하겠습니다.


 

ROWNUM은 테이블 또는 테이블과 비슷한 속성의 객체에 가상의 일련번호가 붙어 있다고 생각하시면 되겠습니다. , ORDER BY 하기 이전에 이미 부여가 되어 있다고 생각하시면 편합니다.

 

그럼 제가 예시로 만든 STUDENT 테이블에서 ROWNUM을 확인해 보도록 하겠습니다.

 

아래 STUDENT 테이블이 있습니다.

 


 

여기서 ROWNUM과 함께 ORDER BY로 성적(SCORE)를 정렬해서 ROWNUM을 비교해 보도록 하겠습니다.

 

SQL 문


1

2

3

SELECT ROWNUM, SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

FROM WIN.STUDENT

ORDER BY TO_NUMBER(SCORE)

Colored by Color Scripter

cs

 

실행 결과



위와 같이 ORDER BY로 정렬하게 되면 ROWNUM은 정렬된 순서로 보이지 않게 됩니다. ROWNUMWHERE 절의 조건으로 사용하려면 ORDER BY 에서 정렬한 순서대로 보여야 합니다.


다음과 같이 작성해 보도록 하겠습니다.


 

1. ORDER BY로 정렬된 자료를 인라인 뷰로 만들어 ROWNUM을 확인함.


SQL 문


1

2

3

4

5

6

7

SELECT  ROWNUM, SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

FROM

(

    SELECT ROWNUM, SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

    FROM WIN.STUDENT

    ORDER BY TO_NUMBER(SCORE)

)

Colored by Color Scripter

cs

 

실행 결과



위와 같이 ROWNUM도 같이 정렬된 것을 확인하실 수 있습니다.

 

그럼 이제 ROWNUMWHERE 조건과 함께 사용해 보도록 하겠습니다.

 

2. 상위 3개만 조회하기


SQL 문


1

2

3

4

5

6

7

8

SELECT  ROWNUM, SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

FROM

(

    SELECT ROWNUM, SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

    FROM WIN.STUDENT

    ORDER BY TO_NUMBER(SCORE)

)

WHERE ROWNUM < 4

Colored by Color Scripter

cs

 

실행 결과



위와 같이 상위 3개만 조회된 것을 확인하실 수 있습니다.

 

이렇게 오늘은 ROWNUM을 이용하여 오라클에서 TOP n문을 사용하는 방법에 대해서 알아보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY