본문 바로가기

DB/Oracle

[오라클] 상위 n개 데이터를 추출하는 2가지 방법

반응형
SMALL

-- 상위 n개 데이터를 추출하는 2가지 방법
-- subquery(inline view)
-- rownum / dense_rank() / rank()





SELECT   EMPNO,
         ENAME,
         SAL
FROM     EMP
ORDER BY SAL DESC ;



-- 1. 상위 n개의 행(row) 추출 방법 - rownum
SELECT EMPNO,
       ENAME,
       sal
FROM   ( SELECT  EMPNO,
                ENAME,
                SAL
       FROM     EMP
       ORDER BY SAL DESC
       )
WHERE  ROWNUM < = 3 ;


-- 2. 상위 n개의 행(row) 추출 방법 dense_rank()

SELECT empno, ename, sal,
       DENSE_RANK() OVER (ORDER BY sal desc) AS rnk
FROM EMP
;



SELECT EMPNO,
       ENAME,
       SAL
FROM   ( SELECT  EMPNO,
                ENAME,
                SAL,
                DENSE_RANK() OVER(ORDER BY SAL DESC) AS RNK
       FROM     EMP
       )
WHERE  RNK <= 3 ;




반응형
LIST