본문 바로가기

[오라클 레퍼런스 함수] NTILE - 순서대로 버킷 번호 할당 (지정한 버킷 수로)

by ㅇㅍㅍ 2023. 8. 11.
[오라클 레퍼런스 함수] NTILE - 순서대로 버킷 번호 할당 (지정한 버킷 수로)
728x90

 

NTILE

 

구문

NTILE(expr) OVER ([ query_partition_clause ] order_by_clause)

 

참고:

expr의 유효한 형식을 포함한 구문, 의미, 그리고 제한 사항에 대한 정보는 "Analytic Functions"에 대한 내용을 참조하세요.

 

목적

NTILE은 분석 함수입니다. 순서가 지정된 데이터 집합을 expr로 지정된 버킷(buckets) 수로 나누어 각 행에 적절한 버킷 번호를 할당합니다. 버킷은 1부터 expr까지 번호가 매겨집니다. 각 파티션마다 expr 값은 양의 상수로 해결되어야 합니다. 오라클 데이터베이스는 정수를 예상하며, expr이 정수 상수가 아닌 경우에는 값이 정수로 절삭됩니다. 반환 값은 NUMBER입니다.

버킷 내의 행 수는 최대 1개 차이날 수 있습니다. 나머지 값(행 수를 버킷으로 나눈 나머지)은 버킷 1부터 시작하여 각 버킷에 하나씩 분배됩니다.

expr이 행 수보다 큰 경우 행 수와 동일한 수의 버킷이 채워지고, 나머지 버킷은 비어 있을 것입니다.

exprNTILE 또는 다른 분석 함수를 사용하여 분석 함수를 중첩할 수 없습니다. 그러나 expr에 다른 내장 함수 식을 사용할 수 있습니다.

 

참고:

expr의 유효한 형식에 대한 정보는 "About SQL Expressions"를 참조하고 암묵적 변환에 대한 자세한 내용은 표 2-8을 참조하십시오.

 

예시

다음 예제는 부서 100의 oe.employees 테이블의 salary 열 값을 4개의 버킷으로 분할합니다. 이 부서의 salary 열에는 6개의 값이 있으므로 2개의 추가 값(6 / 4의 나머지)은 버킷 1과 2에 할당되어, 이들 버킷은 버킷 3 또는 4보다 한 개의 값이 더 많습니다.

SELECT last_name, salary, NTILE(4) OVER (ORDER BY salary DESC) AS quartile
  FROM employees
  WHERE department_id = 100
  ORDER BY last_name, salary, quartile;

LAST_NAME                     SALARY   QUARTILE
------------------------- ---------- ----------
Chen                            8200          2
Faviet                          9000          1
Greenberg                      12008          1
Popp                            6900          4
Sciarra                         7700          3
Urman                           7800          2

 


출처: 오라클 레퍼런스

원문 링크: Oracle NTILE 함수 문서

 

반응형

댓글