최보름달

[SQL] ROWNUM, TOP() 본문

문송한 회사생활/SQL 공부

[SQL] ROWNUM, TOP()

PieMoon 2020. 8. 14. 21:35

ROWNUM

오라클에서 순위가 높은 N개의 로우를 출력할때 사용하는 명령어.

오라클은 정렬이 완료된 후 데이터를 출력하는게 아니라, 데이터 일부를 추출한 후에 정렬작업이 일어난다. 

 

급여가 높은 3명만 추리고 싶을 때 

-- 이렇게 하면 엉뚱한 결과가 나온다. 틀린 쿼리.
SELECT   ENAME, SAL
FROM     EMP
WHERE    ROWNUM < 4    -- 이걸 먼저 수행하고 
ORDER BY SAL DESC  ;   -- 이게 돌아버리기 때문. 

-- 이렇게 하셔야 합니다. 
SELECT   ENAME, SAL
FROM    ( SELECT   ENAME, SAL
          FROM     EMP
          ORDER BY SAL DESC  )   -- 인라인 뷰를 이용해서 데이터셋을 구성해줘야 한다. 
WHER     ROWNUM < 4 ;

 

TOP()

오라클과 달리 sql server에서 제공하는 TOP() 함수는 데이터 정렬 후 원하는 데이터를 출력한다. 

 

급여가 높은 2명을 추리고 싶을 때 

SELECT   TOP(2) ENAME, SAL
FROM     EMP
ORDER BY SAL DESC ; 

 

급여가 높은 2명을 추리되, 같은 급여를 받는 사람이 있다면 같이 출력하는 예제

SELECT   TOP(2) WITH TIES ENAME, SAL
FROM     EMP
ORDER BY SAL DESC ; 

 

TOP(2) WITH TIES 옵션은 동일 수치의 데이터를 추가로 더 추출하는 함수다. 

 

 

 

 

 

kdata 한국데이터진흥원에서 출간한 SQL 전문가 가이드 2013 Edition을 요약했습니다.