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'라고 한다.
'데이터베이스 > ORACLE' 카테고리의 다른 글
[ORACLE] EXTRACT 함수의 결과 데이터 타입은 무엇일까 (2) | 2020.05.29 |
---|---|
[ORACLE] 날짜 포맷 'YY', 'RR' 차이점 (0) | 2020.05.29 |
[ORACLE] 부서별 차등 보너스 계산 / CASE, DECODE 활용 (0) | 2020.05.29 |
[ORACLE] CASE 조건문에서, 조건이 중복될 때 어떻게 되는가? (0) | 2020.05.29 |
[ORACLE] Embeded SQL 개발 절차(기능 검증 - 성능 검증 - host language에 작성) (0) | 2020.05.29 |