RANK(), DENSE_RANK(), ROW_NUMBER()| 함수 | 설명 | 예제 코드 |
|---|---|---|
RANK() |
동일한 값은 동일 순위, 건너뛰는 순위 부여 | RANK() OVER (ORDER BY salary DESC) |
DENSE_RANK() |
동일한 값은 동일 순위, 순위 건너뛰지 않음 | DENSE_RANK() OVER (ORDER BY salary DESC) |
ROW_NUMBER() |
중복 없이 고유 번호 부여 (정렬 기준 순서대로) | ROW_NUMBER() OVER (ORDER BY salary DESC) |
예시 실행 결과:
| 이름 | salary | rank | dense_rank | row_number |
|---|---|---|---|---|
| Alice | 9000 | 1 | 1 | 1 |
| Bob | 9000 | 1 | 1 | 2 |
| Carla | 8500 | 3 | 2 | 3 |
| Daniel | 8500 | 3 | 2 | 4 |
| Evan | 7000 | 5 | 3 | 5 |
CUME_DIST(), PERCENT_RANK()| 함수 | 설명 | 예제 코드 |
|---|---|---|
CUME_DIST() |
현재 행 이하의 비율 반환 (누적 분포) | CUME_DIST() OVER (ORDER BY salary DESC) |
PERCENT_RANK() |
백분위 순위 계산 | PERCENT_RANK() OVER (ORDER BY salary DESC) |
예시 실행 결과:
| 이름 | salary | cume_dist | percent_rank |
|---|---|---|---|
| Alice | 9000 | 0.4 | 0.0 |
| Bob | 9000 | 0.4 | 0.0 |
| Carla | 8500 | 0.8 | 0.5 |
| Daniel | 8500 | 0.8 | 0.5 |
| Evan | 7000 | 1.0 | 1.0 |
RATIO_TO_REPORT()| 함수 | 설명 | 예제 코드 |
|---|---|---|
RATIO_TO_REPORT() |
전체 합계 대비 현재 값의 비율 | RATIO_TO_REPORT(salary) OVER () |
예시 실행 결과:
| 이름 | salary | 비율 |
|---|---|---|
| Alice | 9000 | 0.277 |
| Bob | 9000 | 0.277 |
| Carla | 8500 | 0.262 |
| Daniel | 8500 | 0.262 |
| Evan | 7000 | 0.215 |
NTILE(n)| 함수 | 설명 | 예제 코드 |
|---|---|---|
NTILE(n) |
데이터를 n개의 그룹으로 균등 분할 | NTILE(4) OVER (ORDER BY salary DESC) |
예시 실행 결과 (NTILE(4) 사용 시):