[오라클 SQL] 오라클 ROWNUM을 이용하여 TOP n문 구현하는 방법
- Database(데이터베이스)/Oracle
- 2020. 2. 24. 00:00
안녕하세요.
오늘은 오라클 에서 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) |
실행 결과
위와 같이 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문을 사용하는 방법에 대해서 알아보았습니다.
감사합니다.^^
'Database(데이터베이스) > Oracle' 카테고리의 다른 글
[오라클 SQL] 다른 테이블에서 데이터 저장하기 (0) | 2020.03.10 |
---|---|
[오라클 SQL] 오라클 KEEP 함수 사용방법 (0) | 2020.02.26 |
[오라클 SQL] 오라클 트리거(TRIGGER) 활성화, 비활성화 하는 방법 (0) | 2020.02.23 |
[오라클 SQL] 오라클 트리거(TRIGGER) 개념 및 사용 방법 (0) | 2020.02.21 |
[오라클 SQL] 오라클(Oracle)에서 현재 생성된 프로시저 목록 조회하는 방법 (0) | 2020.02.13 |
이 글을 공유하기