문법 |
목적 |
PERCENTILE_DISC함수는
이산 분포 모형을 가정하는 역 분포 함수이다.이 함수는 백분위수와 소트 지정을 취해서, 세트로부터 요소를 반환한다. 계산에서 Null은
무시된다.
이 함수는 인수로써 임의의 수치 데이터형 또는 암묵적으로 수치 데이터형으로 변환 가능한 비 수치
데이터형을 취한다. 함수는 인수의 수치 데이터형과 같은 데이터형을 반환한다.
처음 expr은 0~1 사이의 수치값으로 평가된다. 왜냐하면 백분위 값이기 때문이다. 이 표현은 각
집계 그룹내에서 상수가 될필요가 있다. ORDER BY구문은 소트 가능한 단일 표현을 취한다.
주어진 백분위 값 P에 대해서, PERCENTILE_DISC는 ORDER BY 구문에서 표현의 값을
소트하여서, P 이상인(같은 소트 지정에 따르는)것 중에 최소 CUME_DIST값을 가지는 값을 반환한다.
CUME_DIST 함수를 이용하여 값들의 집합에서 값의 위치를 계산할 수 있었으나 역산 (특정한 백분위수의 값을 발견하는)은 어렵거나 효과적인 연산이 수행되지는 않습니다. 이러한 어려움을 극복하기 위하여 PERCENTILE_CONT와 PERCENTILE_DISC 같은 역 분포 함수를 제공합니다. PERCENTILE_CONT는 연속분포 (Continuous Distribution)를 가정한 역 분포 함수이고, PERCENTILE_DISC는 이산분포(Discrete Distribution)를 가정한 역 분포 함수입니다.
PERCENTILE_CONT: 입력받은 수치 값이 어느 두 값의 사이일 경우 두 값의 사이에서
계산된 값을 리턴한다.
PERCENTILE_DISC: 입력받은 수치 값이 어느 두 값의 사이일 경우 다른 계산과정 없이 작은 값을 그대로 리턴한다.
예제 |
집계
예제
PERCENTILE_CONT
예제 참조.
다음 예제는 샘플 테이블 hr.employess에서 각 종업원의 급여의 중앙값 이산 백분위를
계산한다.
SELECT last_name, salary, department_id, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary DESC) OVER (PARTITION BY department_id) "Percentile_Disc", CUME_DIST() OVER (PARTITION BY department_id ORDER BY salary DESC) "Cume_Dist" FROM employees where department_id in (30, 60); LAST_NAME SALARY DEPARTMENT_ID Percentile_Disc Cume_Dist ------------- ---------- ------------- --------------- ---------- Raphaely 11000 30 2900 .166666667 Khoo 3100 30 2900 .333333333 Baida 2900 30 2900 .5 Tobias 2800 30 2900 .666666667 Himuro 2600 30 2900 .833333333 Colmenares 2500 30 2900 1 Hunold 9000 60 4800 .2 Ernst 6000 60 4800 .4 Austin 4800 60 4800 .8 Pataballa 4800 60 4800 .8 Lorentz 4200 60 4800 1
부서 30에서 대응하는 백분위(Cume_Dist)가 0.5이상중에서 최소값을 가지는 중앙값은
2900이다.
부서 60에서 대응하는 백분위(Cume_Dist)가 0.5이상중에서 최소값을 가지는 중앙값은
4800이다.