기타 분석 함수
앞에서 다루지는 않았지만 추가로 몇 가지 유용한 함수에 대해 알아 보자.
① WIDTH_BUCKET (expr, min_value, max_value, num_buckets)
WIDTH_BUCKET 함수는 분석 함수에 속하지는 않지만, NTILE 함수와 용도가 비슷하다. WIDTH_BUCKET 함수는 NTILE처럼 분할 결과를 반환하는데, 다른 점은 expr 값에 따라 최솟값(min_value)과 최댓값(max_value)을 주어 num_buckets 수만큼 분할한다. 60번 부서에 대해 NTILE과 WIDTH_BUCKET 함수를 비교해 보자.
입력
SELECT department_id, emp_name,
salary
,NTILE(4) OVER (PARTITION BY department_id
ORDER BY salary
) NTILES
,WIDTH_BUCKET(salary, 1000, 10000, 4) widthbuacket
FROM employees
WHERE department_id = 60;
WIDTH_BUCKET 함수는 급여를 1,000에서 10,000까지 네 구간으로 나눈다는 의미이며 따라서 급여가 1 ~ 2,500이면 1, 2,501~5,000이면 2, 5,001~ 7,500이면 3, 7,501 ~ 10,000이면 4로 결과를 반환한다. Diana, David, Valli는 급여가 2 구간에 속하고, Bruce는 3 구간, Alexander는 4 구간에 속함을 알 수 있다. NTILE은 파티션에 속한 로우의 수를 기준으로 나누지만, WIDTH_BUCKET은 매개변수에 따라 나뉜다는 점을 명심하자.