Oracle DBA/SQL

055, 056 : 데이터 분석 함수로 출력 결과 넘버링 하기(ROW_NUMBER, ROWNUM)

Nuez 2023. 6. 29. 16:36
반응형

예제. 직업이 SALESMAN인 사원의 이름, 월급, 직업을 출력하시오.

SELECT ename, sal, job
FROM emp
WHERE job = 'SALESMAN';


예제. 위의 SQL에서 출력되는 결과에 번호를 순서대로 앞에 부여하시오. 

SELECT ROWNUM, ename, sal, job
FROM emp
WHERE job = 'SALESMAN';


문제 278. 위의 결과를 다시 출력하는데 월급이 높은 사원부터 출력하시오. 

SELECT ROWNUM, ename, sal, job
FROM emp
WHERE job = 'SALESMAN'
ORDER BY sal DESC;


문제 279. 위의 결과에서 앞의 번호가 1,2,3,4로 나오게 하시오. 

방법1. 서브쿼리

SELECT ROWNUM, ename, sal, job
FROM (SELECT ename, sal, job
       FROM emp
        WHERE job = 'SALESMAN'
        ORDER BY 2 DESC);


order by 절이 먼저 수행될 수 있도록 from절의 서브쿼리로 감싸줘야 함 

방법2. 서브쿼리 안쓰고 하는 방법 

SELECT ROW_NUMBER() OVER (ORDER BY sal DESC), ename, sal, job
FROM emp
WHERE job = 'SALESMAN';