반응형
예제) 사원 테이블에서 급여가 높은 3명만 내림차순으로 출력
1. 잘못된 예 – Oracle의 경우 정렬이 완료된 후 데이터의 일부가 출력되는 것이 아니라, 데이터의 일부가 먼저 추출된 후(ORDER BY 절은 결과 집합을 결정하는데 관여하지 않음) 데이터에 대한 정렬 작업이 일어나므로 주의해야 한다.
SELECT ENAME, SAL
FROM EMP
WHERE ROWNUM < 4
ORDER BY SAL DESC;
2. 성공적인 예 – ORDER BY 절이 사용되는 경우 ORACLE은 ROWNUM 조건을 ORDER BY 절보다 먼저 처리되는 WHERE 절에서 처리하므로, 정렬 후 원하는 데이터를 얻기 위해서는 인라인 뷰에서 먼저 데이터 정렬을 수행한 후 메인쿼리에서 ROWNUM 조건을 사용해야 한다.
SELECT ENAME, SAL
FROM (SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC)
WHERE ROWNUM < 4;
반응형
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
특정 테이블스페이스(TBS1)의 데이터파일 확인 후 데이타 파일 생성하여 추가 (0) | 2012.06.27 |
---|---|
SQL 전문가 가이드, JOIN 정리 (0) | 2012.04.12 |
SELECT 문장 실행 순서 – 옵티마이저가 SQL 문장의 SYNTAX, SEMANTIC 에러를 점검하는 순서 (0) | 2012.03.28 |
ORDER BY 절 사용 특징 - SQL전문가 가이드 p.270 (0) | 2012.03.28 |
집계 함수와 NULL 처리 - SQL전문가 가이드 p. 265 (0) | 2012.03.28 |