문법 |

그림 설명
분석
문법
percent_rank_analytic::=
![]()
목적 |
PERCENT_RANK함수는 그룹 수에 대한 값의 순위 퍼센트를 반환.
PERCENT_RANK함수는 CUME_DIST(누적 분포)함수와 유사하다. PERCENT_RANK에
의해 반환되는 값의 범위는 0~1(포함한)이다. 모든 집합의 최초 행은 0의 PERCENT_RANK이다. 반환되는 값은 NUMBER이다.
집계 함수로써, PERCENT_RANK함수는 함수의 인수와 대응하는 소트 지정에 의해서 선택된
불확적정인 행 r을 계산하여서, 행 r의 RANK로부터 1을 빼고, 집계 그룹내의 행의 수로 나눈다. 이 계산은 불확실한 행 r이 오라클
데이터베이스가 집계하는 행의 그룹에 삽입되듯이 계산한다. 함수의 인수는 각 집계 그룹내의 하나의 불확실한 행을 식별한다. 그러므로, 각 집계
그룹내에서 상수 표현으로 평가될 필요가 있다. 상수 인수식과 집계의 ORDER BY구문의 식의 위치는 일치한다. 그러므로 인수의 수는 같아야하고,
그 형태는 호환되어야 한다.
분석 함수로써 PERCENT_RANK함수는 행 r에 대하여 r의 Rank로부터 1을 뺀 수를
평가되어지는 행(전체 쿼리결과 세트 또는 파티션)수에서 1을 뺀수로 나눈다.
CUME_DIST함수와 유사한 함수이나 PARTITION별 각 row의 순위
-1/PARTITION내의 ROW의 수를 결과값으로 하며, 결과값의 범위는 0<=결과값<=1이고 집합의 첫번째 row의 PERCENT_RANK는
항상 0이 된다.

[그림] CUME_DIST()와 PERCENT_RANK의 비교
예제
|
집계 예제
다음 예제는 hr.employees테이블에서 급여가
$15,500이고, 수수료가 5%인 불확실한 종업원의 Percent Rank를 계산한다.
SELECT PERCENT_RANK(15000, .05) WITHIN GROUP
(ORDER BY salary, commission_pct) "Percent-Rank"
FROM employees;
Percent-Rank
------------
.971962617
다음 예제는 종업원마다 부서내에서 종업원 급여의
Percent Rank를 계산한다.
SELECT department_id, last_name, salary,
PERCENT_RANK() OVER (PARTITION BY department_id ORDER BY salary DESC) AS pr
FROM employees
ORDER BY pr, salary;
DEPARTMENT_ID LAST_NAME SALARY PR
------------- ------------------------- ---------- ----------
10 Whalen 4400 0
40 Marvis 6500 0
. . .
80 Vishney 10500 .176470588
50 Everett 3900 .181818182
30 Khoo 3100 .2
. . .
80 Johnson 6200 .941176471
50 Markle 2200 .954545455
50 Philtanker 2200 .954545455
50 Olson 2100 1
. . .