[Oracle] 상위 n개 데이터를 추출하는 2가지 방법
- 데이터베이스/오라클
- 2022. 2. 15.
오라클에서 상위 3개, 5개, 10개, 100개 등 n개의 데이터를 뽑기 위해서는 서브 쿼리를 활용하면 쉽게 해결할 수 있다. 서브 쿼리(Inline View)를 사용하여 데이터를 먼저 정렬한 후, 원하는 개수만큼 데이터를 추출하면 된다. 대부분 ROWNUM 키워드를 사용하며, 특수한 경우에 순위 함수(DENSE_RANK)를 사용하여 순위를 부여한 후 순위로 데이터를 추출하기도 한다.
상위 n개의 행(ROW) 추출 방법
SELECT empno
, ename
, sal
FROM (
SELECT empno
, ename
, sal
FROM emp
ORDER BY sal DESC
)
WHERE ROWNUM <= 3
![]() |
연봉(sal)이 높은 순서로 정렬한 후 ROWNUM을 사용하여 3개의 데이터만 추출하였다.
서브 쿼리를 사용하지 않고 하나의 쿼리문으로 작성해 보려고 할 수 있지만, WHERE절의 ROWNUM이 ORDER BY 절보다 먼저 실행되고 다시 정렬되므로 ROWNUM과 정렬 순서가 틀려지게 된다. 서브 쿼리에서 ORDER BY를 먼저 수행 후 ROWNUM을 사용해야 한다.
상위 순위 n개 추출 방법
SELECT empno
, ename
, sal
FROM (
SELECT empno
, ename
, sal
, DENSE_RANK() OVER(ORDER BY sal DESC) AS rnk
FROM emp
)
WHERE rnk <= 3
![]() |
연봉(sal)이 높은 순서로 순위를 부여하고 3순위까지만 데이터를 추출하였다. 연봉이 동일한 경우 같은 순위를 부여하였기 때문에 4개의 행이 조회된다.
[Oracle] RANK, DENSE_RANK 순위 함수 사용법
오라클에서 성적, 급여, 매출 등 순위를 구하기 위해서 순위 함수(RANK, DENSE_RANK)를 사용하면 된다. 순위 함수의 순위는 OVER 함수 내부의 ORDER BY 컬럼 값으로 결정된다. RANK() : 중복 순위 개수만큼
gent.tistory.com
[Oracle] 조회 순번 매기는 방법 (ROWNUM, ROW_NUMBER())
1. ROWNUM 키워드 이용하는 방법 - 조회된 순서되로 순번을 매긴다. SELECT ROWNUM , a.* FROM emp a - ORDER BY 를 사용하면 순번이 뒤섞이므로 정렬된 서브쿼리 결과에 ROWNUM 을 매겨야 한다. SELECT ROWNUM..
gent.tistory.com