포스팅 목차
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크
o CUME_DIST
문 법
- 집계 문법
cume_dist_aggregate::=
- 분석 문법
cume_dist_analytic::=
목 적
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;
패키지 함수 비교(Oracle, Pandas, R Prog, Dplyr, Sqldf, Pandasql, Data.Table)
관련 함수
함수명 | 함수내용 |
CUME_DIST | 그룹에 존재하는 관측치의 누적 분포 값을 계산한다. |
DENSE_RANK | Rank()와 유사한 함수로 각 그룹별로 ORDER BY절에 사용된 칼럼이나 표현식을 기준으로 정렬하고, 그룹 내의 각 열에 대한 순위를 부여한다. |
PERCENT_RANK | 인수로 지정한 값의 그룹 내의 위치를 나타내는 백분위 순위(순위 퍼센트, Percent rank)를 반환한다. |
RANK | 값의 그룹에서 값의 순위를 계산한다. 반환되는 데이터형은 NUMBER이다. |
ROW_NUMBER |
파티션 그룹별 또는 전체 데이터에 대하여 order_by_clause에서 지정된 행의 정렬 순위대로 1로 시작하는 중복을 허용하지 않는 유일한(unique) 순서 값을 할당한다. (파티션에서 각 행 또는 쿼리에 의해서 반환되는 각 행에 대하여) |
예제
- 집계 함수 예제
다음 예제는 oe.employees테이블에서 종업원 중에서 급여가 15,500달러이고, 수수료가 5%인 종업원의 누적 분포를 계산한다.
Oracle Program |
SELECT CUME_DIST(15500, .05) WITHIN GROUP
(ORDER BY salary, commission_pct) "Cume-Dist of 15500"
FROM employees;
Results |
Cume-Dist of 15500
------------------
.972222222
- 분석 함수 예제
다음 예제는 구매 부분의 각 종업원의 급여 퍼센트를 계산한다. 예를 들어, 종업원의 40%가 Himuro의 급여 이하의 급여를 받는 것을 알 수 있다.
Oracle Program |
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%';
Results |
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
--------------------------------------------
오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크 |
[SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크 |
반응형
'오라클 게시판 > 오라클 함수' 카테고리의 다른 글
【오라클(Oracle) SQL 함수】 CURRENT_TIMESTAMP 함수 (0) | 2018.11.15 |
---|---|
【오라클(Oracle) SQL 함수】 CURRENT_DATE 함수 (0) | 2018.11.15 |
[오라클함수] COVAR_SAMP 함수 (0) | 2018.11.14 |
[오라클 함수] COVAR_POP 함수 (0) | 2018.11.14 |
【오라클(Oracle) SQL 함수】 COUNT 함수 (0) | 2018.11.14 |
댓글