반응형
목차
4. 서브쿼리
4-5. Top-N 쿼리
4-5-1. ROWNUM
4-5-2. 윈도우 함수의 순위함수를 사용한 Top-N쿼리
4. 서브쿼리
4-5. Top-N 쿼리
Top-N 쿼리란 조회 결과 중 상위 N개의 데이터를 조회하는 쿼리를 말한다.
대표적으로 ROWNUM을 이용하는 방법과 윈도우 함수(RANK, DENSE_RANK, ROW_NUMBER)를 이용하는 방법이 있다.
1️⃣ ROWNUM
ROWNUM은 조회된 결과에 대해 조회 순서대로 1부터 순차적인 번호를 부여하는 의사 컬럼(Psedo Column)이다.
조회되는 순서대로 번호가 부여되므로 ORDER BY보다 먼저 적용되며, WHERE 절에서 조건이 거짓이 되는 순간 이후의 행은 조회하지 않는다.
또한 중간 번호를 건너뛰어 조회할 수 없다는 점에 주의해야 한다.
🔹 기본 사용법
SELECT ROWNUM
,A
,B
FROM DUAL
WHERE ROWNUM <= N;
🔹 예제

SELECT ROWNUM
.EMPNO
,ENAME
,SAL
FROM EMP
WHERE ROWNUM <= 5;
➜ 조회한 순서대로 번호를 부여한 후, 상위 5개의 행을 조회한다.
🔹 실행결과

🔹 예제 2
SELECT ROWNUM
,EMPNO
,ENAME
,SAL
FROM EMP
WHERE ROWNUM <= 5
ORDER BY SAL;
➜ 먼저 ROWNUM이 1~5까지 부여한 후, 조회된 5건에 대해서만 SAL 기준으로 정렬한다.
따라서 급여가 높은 상위 5명을 조회하는 것이 아니라 먼저 조회된 5명의 데이터를 급여순으로 정렬한 결과가 출력된다.
🔹 실행결과 2

📌 ROWNUM은 ORDER BY보다 먼저 수행된다.
2️⃣ 윈도우 함수의 순위함수를 사용한 Top N 쿼리
윈도우 함수의 순위 함수를 이용하면 ORDER BY를 수행한 후 순위를 부여할 수 있으므로 원하는 기준으로 Top-N 조회가 가능하다.
🔹 예제
SELECT *
FROM (SELECT RANK() OVER(ORDER BY SAL DESC) AS RANK
,EMPNO
,ENAME
,SAL
FROM EMP)
WHERE RANK <= 5;
➜ 서브쿼리에서 SAL이 큰 순서대로 RANK를 사용하여 순위를 매긴 후, 상위 5순위까지 출력한다.
🔹 실행결과

🔗 출처
반응형