일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 데이터 분석
- level 2
- 프로그래머스
- 튜닝
- matplotlib
- Oracel
- 실습
- Python
- seaborn
- 오라클
- 카카오
- Kaggle
- 파이썬
- sklearn
- 코딩테스트
- 머신러닝
- python3
- pandas
- SQL
- 알고리즘
- level 1
- 빅분기
- 실기
- 빅데이터 분석 기사
- Numpy
- oracle
- R
- Today
- Total
라일락 꽃이 피는 날
[Oracle] 데이터 분석 함수 1 - 순위/등급/넘버링 본문
데이터 분석 함수
- rank : 순위 출력
- dense_rank : 순위 출력
- ntile : 등급 출력
- cume_dist : 순위의 비율 출력
- row_number : 출력 결과에 번호 부여(넘버링)
예제 1. 이름, 월급, 순위를 출력하는데, 월급이 높은 순서대로 순위를 부여
select ename, sal, rank() over (order by sal desc) as 순위
from emp;
over 는 '확장하다' 라는 뜻이다.
즉, over 다음에 나오는 괄호 안의 내용으로 확장해서 rank 를 출력하겠다는 뜻이다.
예제 2. 부서 번호, 이름, 월급, 순위를 출력하는데, 부서 번호 별로 각각 월급이 높은 순서대로 순위를 부여
select deptno, ename, sal
, rank() over (partition by deptno
order by sal desc) as 순위
from emp;
partition by 컬럼명은 over 괄호 안에 order by 컬럼명 전에 작성하면 된다.
예제 3. 월급이 2,850인 사원은 테이블 전체에서 순위가 몇 위인가?
select rank(2850) within group (order by sal desc) as 순위
from emp;
rank 함수의 괄호 안에 값을 넣고 그 값에 대한 순위를 출력하는데,
within group 의 뜻이 'within group 이후의 괄호 안에 쓴 범위 안에서' 라는 뜻이다.
within group 이후의 괄호 안에 쓴 범위 안에서 2,850의 순위를 출력한다.
예제 4. 직업이 ANALYST, MANAGER 인 사원들의 이름, 월급, 직업, 월급에 대한 순위를 출력
select ename, sal, job, dense_rank() over (order by sal desc) 순위
from emp
where job in ('ANALYST', 'MANAGER');
dense_rank 를 사용해서 1등 2명 다음에 2등이 출력된다.
예제 5. 이름, 직업, 월급, 등급을 출력하는데, 월급이 높은 순으로 4등급으로 나눠서 출력
select ename, job, sal, ntile(4) over (order by sal desc) 등급
from emp;
0 < ~ ≤ 25% : 1등급
25 < ~ ≤ 50% : 2등급
50 < ~ ≤ 75% : 3등급
75 < ~ ≤ 100% : 4등급
예제 6. 이름, 월급, 순위, 자신의 월급의 순위에 대한 비율을 출력
select ename, sal, dense_rank() over (order by sal desc) as 순위
, cume_dist() over (order by sal desc) as 순위비율
from emp;
1등은 1/14로 계산된 비율이고, 2등은 2명이어서 3/14로 계산된 비율이다.
예제 7. 부서 번호가 30번인 사원들 중에서 월급이 2번째로 높은 사원의 모든 행을 출력
select *
from (select row_number() over (order by sal desc) 번호, e.*
from emp e
where deptno = 30
)
where 번호 = 2;
넘버링을 해 놓으면 출력 되는 결과의 특정 행만 검색할 때 아주 유용하다.
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 데이터 분석 함수 3 - 누적 데이터, 비율 (0) | 2022.05.30 |
---|---|
[Oracle] 데이터 분석 함수 2 - column/row (0) | 2022.05.30 |
[Oracle] select 문의 6가지 절 (0) | 2022.05.30 |
[Oracle] 복수행 함수 - 집계함수 (0) | 2022.05.29 |
[Oracle] 단일행 함수 - 일반 함수 (0) | 2022.05.27 |