041 데이터 분석 함수로 순위 출력하기 1(RANK)
042 데이터 분석 함수로 순위 출력하기 2(DENSE_RANK)
043 데이터 분석 함수로 등급 출력하기(NTILE)
044 데이터 분석 함수로 순위의 비율 출력하기(CUME_DIST)
045 데이터 분석 함수로 데이터를 가로로 출력하기(LISTAGG)
046 데이터 분석 함수로 바로 전 행과 다음 행 출력하기(LAG, LEAD)
047 COLUMN을 ROW로 출력하기 1(SUM+DECODE)
048 COLUMN을 ROW로 출력하기 2(PIVOT)
049 ROW를 COLUMN으로 출력하기(UNPIVOT)
050 데이터 분석 함수로 누적 데이터 출력하기(SUM OVER)
051 데이터 분석 함수로 비율 출력하기(RATIO_TO_REPORT)
052 데이터 분석 함수로 집계 결과 출력하기 1(ROLLUP)
053 데이터 분석 함수로 집계 결과 출력하기 2(CUBE)
054 데이터 분석 함수로 집계 결과 출력하기 3(GROUPING SETS)
055 데이터 분석 함수로 출력 결과 넘버링 하기(ROW_NUMBER)
041 데이터 분석 함수로 순위 출력하기 1(RANK)
직업이 ANALYST, MANAGER인 사원들의 이름, 직업, 월급, 월급의 순위를 출력해보겠습니다.
SELECT ename, job, sal, RANK() over (ORDER BY sal DESC) 순위
FROM emp
WHERE job in ('ANALYST', 'MANAGER');
RANK()는 순위를 출력하는 데이터 분석 함수입니다. RANK() 뒤에 OVER 다음에 나오는 괄호 안에 출력하고 싶은 데이터를 정렬하는 SQL 문장을 넣으면 그 컬럼 값에 대한 데이터의 순위가 출력됩니다.
월급이 높은 사원부터 출력되게 ORDER BY절을 사용하였으므로 월급이 높은 순서부터 순위가 부여되어 출력되었습니다. 출력된 순위는 1등이 2명이어서 2등이 출력되지 않고 바로 3드이 출력되었습니다. 바로 2등을 출력하고자 할 때는 다음 챕터에서 배울 DENSE_RANK 함수를 이용하면 됩니다.
이번에는 직업별로 월급이 높은 순서대로 순위를 부여해서 각각 출력해 보겠습니다.
SELECT ename, job, RANK() over(PARTITION BY job ORDER BY sal DESC) as 순위
FROM emp;
직업별로 묶어서 순위를 부여하기 위해 ORDER BY 앞에 PARTITION BY JOB을 사용했습니다.
042 데이터 분석 함수로 순위 출력하기 2(DENSE_RANK)
직업이 ANALYST, MANAGER인 사원들의 이름, 직업, 월급, 월급의 순위를 출력하는데 순위 1위인 사원이 두 명이 있을 경우 다음 순위가 3위로 출력되지 않고 2위로 출력해보겠습니다.
SELECT ename, job, sal, RANK() over (ORDER BY sal DESC) as RANK,
DENSE_RANK() over (ORDER BY sal DESC) as DENSE_RANK
FROM emp
WHERE job IN ('ANALYST','MANAGER');
'초보자를 위한 SQL 200제' 카테고리의 다른 글
PART 2 「초급」 SQL 기초 다지기 (026 ~040) (0) | 2023.01.17 |
---|---|
PART 2 「초급」 SQL 기초 다지기 (016 ~ 025) (0) | 2023.01.17 |
PART 1 입문 (0) | 2023.01.04 |
SQL Developer 설치 (0) | 2023.01.03 |
오라클19 데이터베이스 설치하기 (0) | 2023.01.03 |