Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

CUME_DIST

문법

MAIN

집계 문법

cume_dist_aggregate::=
Description of cume_dist_aggregate.gif follows
그림 설명

분석 문법

cume_dist_analytic::=
Description of cume_dist_analytic.gif follows
그림 설명


See Also:

"Analytic Functions " for information on syntax, semantics, and restrictions


 

목적

MAIN

CUME_DIST함수는 값의 그룹에 있는 값의 누적 분포치를 계산한다. 반환되는 값의 범위는 0보다 크고 1보다 작다. 이값은 항상 같은 누적 값에 대하여 평가한다. 이 함수는 임의의 수치형 데이터 또는 암묵적으로 수치 데이터형으로 변환 가능한 비 수치형데이터이다. 오라클 데이터베이스는 수치 우선 순위가 가장 높은 인수를 판단하여, 나머지 인수를 암묵적으로 변환하고, 계산을 수행하여 NUMBER를 반환한다.

PARTITION BY에 의해 나누어진 그룹별로 각 row를 ORDER BY절에 명시된 순서로 정렬한 후 그룹별 상대적인 위치(누적된 분산정도)를 구한다. 상대적인 위치는 구하고자 하는 값보다 작거나 같은 값을 가진 ROW수를 그룹내 총 ROW 수로 나눈 것을 의미하며 결과 값의 범위는 0보다 크고 1보다 작거나 같다.

SELECT  r_regionkey, p_productkey, SUM(s_amount) as s_amount,
    CUME_DIST() OVER (PARTITION BY r_regionkey ORDER BY SUM(s_amount))
    AS cume_dist_per_region
FROM region, product, sales
WHERE r_regionkey = s_regionkey AND p_productkey = s_productkey
GROUP BY r_regionkey, p_productkey ORDER BY r_regionkey, s_amount DESC;


[그림] CUME_DIST()의 활용

예제

MAIN

집계 예제

다음 예제는 oe.employees테이블에서 종업원 중에서 급여가 15,500달러이고, 수수료가 5%인 종업원의 누적 분포를 계산한다.

SELECT CUME_DIST(15500, .05) WITHIN GROUP
   (ORDER BY salary, commission_pct) "Cume-Dist of 15500" 
   FROM employees;

Cume-Dist of 15500
------------------
        .972222222

분석 예제

다음 예제는 구매 부분의 각 종업원의 급여 퍼센트를 계산한다. 예를 들어, 종업원의 40%가 Himuro의 급여 이하의 급여를 받는 것을 알 수 있다.

SELECT job_id, last_name, salary, CUME_DIST() 
   OVER (PARTITION BY job_id ORDER BY salary) AS cume_dist
   FROM employees
   WHERE job_id LIKE 'PU%';

JOB_ID     LAST_NAME                     SALARY  CUME_DIST
---------- ------------------------- ---------- ----------
PU_CLERK   Colmenares                      2500         .2
PU_CLERK   Himuro                          2600         .4
PU_CLERK   Tobias                          2800         .6
PU_CLERK   Baida                           2900         .8
PU_CLERK   Khoo                            3100          1
PU_MAN     Raphaely                       11000          1