순위 출력 함수 - rank() over(order by 열 차순) 별명
(공동 1등, 3등, 4등..)
예시)
select ename, deptno, sal, rank() over (order by sal desc) 순위
from emp
where deptno = 20
순위 출력 함수 - dense_rank() over(order by 열 차순) 별명
(공동 1등, 2등, 3등..)
예시)
select ename, deptno, sal, dense_rank() over (order by sal desc) 순위
from emp
where deptno = 20
순위 출력 함수 - rank or dense_rank() over(partition by 열, order by 열 차순)
(A부서 1등, A부서 2등, B부서 1등, B부서 2등..)
예시)
select job, ename, sal, dense_rank() over(partition by job order by sal desc) 순위
from emp
특정 값의 순위 구하기 - dense_rank(값) within group(order by 열 차순) 별명
예시)
select dense_rank(2975) within group(order by sal desc) 순위
from emp
등급 출력하기 - ntile(등급 수) over(order by 열 차순) 별명
예시)
select ename, job, sal, ntile(4) over(order by sal desc) 등급
from emp
where job in ('ANALYST', 'MANAGER')
순위별 비율 출력하기 - cume_dist() over(order by sal desc) 비율
from emp
예시)
select ename, sal, dense_rank() over(order by sal desc) 순위,
round(cume_dist() over(order by sal desc), 2) 비율
from emp
순위별 비율 출력하기 - cume_dist() over(order by sal desc) 비율
from emp
(부서 별로)
예시)
select deptno, ename, sal,
round(cume_dist() over(partition by deptno order by sal desc), 2) 비율
from emp
특정 열 기준으로 리스트 출력 - 구분 열, listegg(리스트할 열, 구분자) within group (정렬 조건) as 별명
예시)
select deptno, listagg(ename, ',') within group (order by ename asc) as 이름
from emp
group by deptno
이전 행 출력하기 - lag(열, 위치) over(정렬 조건) 별명
예시)
select ename, sal, lag(sal, 1) over(order by sal asc) 이전행
from emp
다음 행 출력하기 - lead(열, 위치) over(정렬 조건) 별명
예시)
select ename, sal, lead(sal, 1) over(order by sal asc) 다음행
from emp
큰 도움이 되었습니다, 감사합니다.