본문 바로가기

데이터베이스/ORACLE

[ORACLE] Top-N Queries & Bottom-N Queries

Top-N Queries

아래의 SQL을 참조하여 최상위 급여자 5명을 조회하는 SQL문을 작성

SELECT  DEPTNO,ENAME,SAL  
FROM    EMP  
WHERE  ROWNUM <= 5 
ORDER  BY SAL DESC ;  

위의 SQL 문제점

: WHERE 절이 먼저 실행되기 때문에, 제대로 결과가 나오지 않는다.

 

 

정답

SELECT DEPTNO, ENAME, SAL
FROM (SELECT DEPTNO, ENAME, SAL FROM EMP ORDER BY SAL DESC)
WHERE ROWNUM BETWEEN 1 AND 5

-- 같은 표현
SELECT DEPTNO, ENAME, SAL
FROM (SELECT DEPTNO, ENAME, SAL FROM EMP ORDER BY SAL DESC)
WHERE ROWNUM <= 5

Bottom-N Queries

서브쿼리 내에 ORDER BY 옵션을 ASC로 바꾸면 된다.

FROM ( ~ ORDER BY SAL ASC)

참고

FROM 절에 쓰인 서브쿼리를 'Inline view'라고 한다.