All thing of the world!

Oracle NTILE 설명 : 오라클 함수 본문

IT/Oracle DBMS

Oracle NTILE 설명 : 오라클 함수

WorldSeeker 2021. 4. 3. 14:32

1. 함수의 목적 

    Oracle NTILE은 데이터 집합을 expr 파라미터에 의해 지시된 버킷(구간)으로 나누고 각 행에 적절한 버킷 번호를 할당한다.
    버킷은 expr을 통해 1부터 번호가 매겨진다.


2. 샘플을 통한 개념 퀵뷰

우선 department_id=100 직원들의 데이터를 살펴본다.

SELECT last_name, salary, department_id  FROM EMPLOYEES
WHERE department_id = 100
ORDER BY salary desc ;

employees 테이블에 있는 Department 100의  salary 열의 값을 4개의 버킷(구간)으로 나눈다.
급여 열은 이 부서에서 6개의 값(ROW)을 가지므로 두 개의 넘치는 값은 버킷넘버 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 salary desc;



3. 사용방법  


4. 함수 PARAMETER 설명

[expr]
몇 개의 버킷(구간)으로 나눌 것인지 정의한다.
정수가 아닌 값이 들어오면 정수로 강제로 변환하고, 반환값 역시 정수이다.
expr이 행의 수보다 크면 행 수와 동일한 수의 버킷넘버가 채워지고 나머지 버킷넘버는 비게된다.

NTILE 또는 expr에 대한 다른 분석 함수를 중첩하여 사용할 수는 없으나, expr은  분석함수이외의 내장 함수 표현식은 중첩 사용 가능하다.


5. 다양한 샘플표현

example1) "2. 샘플을 통한 개념 퀵뷰'에 사용된 예에서, 행보다 많은 버킷을 지정하면 7~10까지는 번호가 없는 것을 확인할 수 있다.

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

example2) expr에 빌트인 함수의 중첩 사용은 허용되어, 에러가 나지 않는다.

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


Comments