[오라클 SQL] 오라클 ROWNUM을 이용하여 TOP n문 구현하는 방법
안녕하세요.
오늘은 오라클 에서 TOP n문 구현하는 방법에 대해서 설명해 드리려고 합니다.
그 중에서도, ROWNUM을 이용하여 TOP n문을 구현해 보려고 해요.
참고로, 오라클에서는 TOP이라는 예약어를 지원하지 않습니다. 그래서 TOP 예약어 대신 다른 문법들을 이용해서 TOP n문을 구현해야 하는데요.
오늘은 여러가지 방법들 중 하나인 ROWNUM을 이용하여 TOP n문을 구현하는 방법에 대해서 살펴보도록 하겠습니다.
그럼 제가 예시로 만든 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) |
실행 결과
위와 같이 ORDER BY로 정렬하게 되면 ROWNUM은 정렬된 순서로 보이지 않게 됩니다. ROWNUM을 WHERE 절의 조건으로 사용하려면 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) ) |
실행 결과
위와 같이 ROWNUM도 같이 정렬된 것을 확인하실 수 있습니다.
그럼 이제 ROWNUM을 WHERE 조건과 함께 사용해 보도록 하겠습니다.
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 |
실행 결과
위와 같이 상위 3개만 조회된 것을 확인하실 수 있습니다.
이렇게 오늘은 ROWNUM을 이용하여 오라클에서 TOP n문을 사용하는 방법에 대해서 알아보았습니다.
감사합니다.^^