Oracle DBA/SQL
057 출력되는 행 제한하기 2(Simple TOP-n Queries)
Nuez
2023. 6. 30. 10:53
반응형
정렬된 결과에서 상위 몇 개의 데이터를 가져오는 방법 2가지
1. ORDER BY 컬럼명 ASC/DESC FETCH FIRST 숫자 ROWS ONLY
2. ORDER BY 컬럼명 ASC/DESC FETCH FIRST 숫자 PERCENT ROWS ONLY
문제 287. 사원 테이블에서 이름, 월급을 출력하는데 월급이 높은 사원 4명만 출력하시오.
SELECT ename, sal
FROM emp
ORDER BY sal DESC FETCH FIRST 4 ROWS ONLY;
문제 288. 위의 결과를 fetch 대신 다른 방법으로 출력하시오.
SELECT ename, sal
FROM(SELECT ename, sal
FROM emp
ORDER BY sal DESC)
WHERE ROWNUM <=4;
이 코드의 단점:
예를 들어 1억건의 행이 있는 emp 테이블이라면,
1. emp의 전체 데이터를 기준으로 ORDER BY를 해서 1억건 다 정렬
2. 그리고 4개만 SELECT
=> 비효율
문제 289. 사원 테이블에서 이름, 월급을 출력하는데 월급이 상위 10%에 해당하는 사원들만 출력하시오.
SELECT ename, sal
FROM emp
ORDER BY sal DESC FETCH FIRST 10 PERCENT ROWS ONLY;