더북(TheBook)

기타 분석 함수

앞에서 다루지는 않았지만 추가로 몇 가지 유용한 함수에 대해 알아 보자.

① 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;
그림 7-30 WIDTH_BUCKET 함수

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은 매개변수에 따라 나뉜다는 점을 명심하자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.