반응형
정렬된 결과에서 상위 몇 개의 데이터를 가져오는 방법 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;
'Oracle DBA > SQL' 카테고리의 다른 글
059 여러 테이블의 데이터를 조인해서 출력하기 2(NON EQUI JOIN) (0) | 2023.06.30 |
---|---|
058 여러 테이블의 데이터를 조인해서 출력하기 1(EQUI JOIN) (0) | 2023.06.30 |
056 출력되는 행 제한하기 1(ROWNUM) (0) | 2023.06.30 |
055, 056 : 데이터 분석 함수로 출력 결과 넘버링 하기(ROW_NUMBER, ROWNUM) (0) | 2023.06.29 |
054 : 데이터 분석 함수로 집계 결과 출력하기 3(GROUPING SETS) (0) | 2023.06.29 |