더북(TheBook)

④ NTILE(expr)

NTILE 함수는 파티션별로 expr에 명시된 값만큼 분할한 결과를 반환한다. 예를 들어 한 그룹의 로우 수가 5이고 NITLE(5)라고 명시하면 정렬된 순서에 따라 1에서 5까지 숫자를 반환한다. 즉 주어진 그룹을 5개로 분리한다는 것인 데 여기서 분할하는 수를 버킷 수라고 한다. 버킷(bucket)이란 단어는 양동이라는 뜻이 있는데 5개의 양동이에 나눠 담는다고 이해하면 된다. 만약 로우 수가 5인데 NITLE(4)를 명시한다면 이는 5개의 로우를 4개의 양동이에 담는다는 의미이므로, 순서에 따라 처음 두 개의 로우는 1, 나머지 로우는 각각 2, 3, 4를 반환한다. 마찬가지로 로우 수가 6일 때는, 처음 두 로우는 1, 다음 두 로우는 2, 다섯 번째는 3, 여섯 번째 로우는 4를 반환한다. 30과 60번 부서에 이 함수를 적용해 보자.

입력

    SELECT department_id, emp_name,
           salary
          ,NTILE(4) OVER (PARTITION BY department_id
                          ORDER BY salary
                         ) NTILES
      FROM employees
     WHERE department_id IN (30, 60) ;
그림 7-22 NITLE 함수

매개변수에 로우 수보다 큰 수를 명시하면 (매개변수 - 로우 수)로 반환되는 수는 무시된다. 즉 로우 수가 4인데 NITLE(6)을 명시하면 실제로 반환되는 값은 1부터 4까지다.

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