All thing of the world!

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

IT/Oracle DBMS

Oracle PERCENTILE_CONT 설명 : 오라클 함수

WorldSeeker 2021. 3. 30. 11:05

1. 함수의 목적

    Oracle PERCENTILE_CONT는 연속 분포 모델을 가정한 역변환 함수이다.
    백분위 수 값에 속하는 보간(interpolated) 값을 반환한다.
    Null은 계산에서 무시한다.


2. 샘플을 통한 개념 퀵뷰
   
    각 부서의 중간정도의 급여를 보여준다.
    PERCENTILE_CONT는 선형 보간(linear interpolation)을 수행 한 후 계산된 결과를 반환하고, PERCENTILE_DISC는 단순히 집계된 값 집합에서 리턴값을 반환한다.
   이 예제에서와 같이 백분위 수 값이 0.5이면 PERCENTILE_CONT는 짝수개의 요소가 있는 그룹의 중간 값 2 개를 평균으로 반환하지만, PERCENTILE_DISC는 두 개의 중간값 중 첫 번째 값을 반환한다.
   홀수개의 요소가 있는 집계그룹의 경우 두 함수 모두 중간 요소 값을 반환한다.


SELECT department_id,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median cont",
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) "Median disc"
FROM employees
GROUP BY department_id
ORDER BY department_id;

3. 사용방법

4. 함수 PARAMETER 설명 

[expr]
첫 번째 expr은 백분위 수 값이므로 0과 1 사이의 숫자 값이어야 한다.
ORDER BY 절의 expr은 오라클이 보간(interpolate)을 수행할 수 있는 유형이여야 하므로, 숫자 또는 날짜 / 시간 값의 단일 표현식을 사용한다.


[OVER]
PERCENTILE_CONT 함수를 분석 함수로 사용할 경우 OVER 절에 query_partitioning_clause 만 지정가능하다.
각 행에 대해 지정된 백분위 수에 속하는 값을 리턴한다.


5. 다양한 샘플표현

example1) 다음 예에서 부서 60의 중간값은 4800이며 해당 백분위 수 (Percent_Rank)는 0.5이다.
부서 30의 급여 중 어느 것도 0.5의 백분위 수를 갖지 않아 중간값은 2800으로 평가되는 2900 (백분위수 0.4)와 2800 (백분위수 0.6) 사이에서 보간(interpolated)되어야 한다.


SELECT last_name, salary, department_id,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC)
OVER (PARTITION BY department_id) "Percentile_Cont",
PERCENT_RANK()
OVER (PARTITION BY department_id ORDER BY salary DESC) "Percent_Rank"
FROM employees
WHERE department_id IN (30, 60)
ORDER BY last_name, salary, department_id;

 

Comments