728x90
반응형
오라클 분석함수중 NTILE 함수는 파티션별로 expr에 명시된 값만큼 분할한 결과를 반환한다. 좀 있어보이게 이야기하면 지정된 분위수를 계산하는 함수.
예를 들어 조건에 따른 검색 결과로 반환되는 로우 수가 5이고 NITLE(5)라고 명시하면 정렬된 순서에 따라 1에서 5까지 숫자를 반환한다. 즉 결과를 5개로 분리한다는 것인 데 여기서 분할하는 수를 버킷 수라고 한다.
여기서 말하는 버킷(bucket)은 우리가 흔히 바케스라고 하는 일본식 발음표현의 그것이나 버킷리스트의 그 버킷과 같다. 즉 지정된 수 만큼의 양동이에 검색 결과를 나눠 담는 함수라 생각하면 된다.
아래 쿼리를 보면 년월일 8자리로 된 reqseq라는 컬럼을 가진 30개의 로우가 있다. 이를 NTILE(5)를 사용하게 되면 reqseq 역순으로 정렬( ORDER BY reqseq DESC ) 하여 5개 그룹으로 분할하여 결과를 리턴한다.
특정한 조건으로 결과를 분할하거나 그룹지어 처리해야할 때 유용한 함수이다.
필자는 몇십 또는 몇백만건 이상의 데이터를 처리할때 Sub Process 분할하여 중복되지 않게 Job을 분배할 때 종종 이 함수를 활용한다.
간단한 예를 들면 분할된 bucket내 최대값 내지 최소값 또는 둘다 이용해서 각 프로세스들이 처리해야하는 영역을 지정할 때 이 함수를 이용한다.
지정된 분할 개수 보다 적거나 딱 떨어지지 않고 애매하게 많을 때, 적은 경우는 있는 개수만큼, 많은 경우는 순서대로 채워지는 특징을 가지고 있다.
728x90
'마린일병의 열정이야기 > etc.' 카테고리의 다른 글
[기타] 애드센스 주소 확인 및 PIN 번호 인증 (0) | 2021.08.20 |
---|---|
[수학][행렬] 전치행렬 (0) | 2020.03.15 |
[Java][JCO] JCO기반의 SAP 연계 기능 개발시 발생한 에러 - Not found in java.library.path (0) | 2019.09.05 |
댓글