본문 바로가기

[오라클 레퍼런스 함수] PERCENT_RANK - 백분율 순위 계산

by ㅇㅍㅍ 2023. 8. 12.
[오라클 레퍼런스 함수] PERCENT_RANK - 백분율 순위 계산
728x90

 

PERCENT_RANK

 

집계 구문

PERCENT_RANK(expr [, expr ]...) WITHIN GROUP
  (ORDER BY
   expr [ DESC | ASC ]
        [NULLS { FIRST | LAST } ]
   [, expr [ DESC | ASC ]
           [NULLS { FIRST | LAST } ]
   ]...
  )

 

분석 구분

PERCENT_RANK( )
   OVER ([ query_partition_clause ] order_by_clause)

 

참고:

구문, 의미, 그리고 제한 사항에 대한 정보는 분석 함수에 대한 내용을 참조하세요.

 

목적

PERCENT_RANK 함수는 누적 분포 함수인 CUME_DIST 함수와 유사합니다. PERCENT_RANK가 반환하는 값의 범위는 0부터 1까지(포함)입니다. 모든 집합의 첫 번째 행의 PERCENT_RANK 값은 0입니다. 반환 값은 NUMBER 타입입니다.

 

참고:

암묵적 변환에 대한 자세한 내용은 표 2-8을 참조하십시오.

 

  • 집계 함수로 사용되는 PERCENT_RANK는 함수의 인수 및 해당 정렬 명세로 식별된 가상의 행 r에 대해, 해당 행 r의 순위에서 1을 뺀 값을 집계 그룹 내의 행 수로 나눈 값을 계산합니다. 이 계산은 가상의 행 r이 Oracle Database가 집계를 수행하는 행 그룹에 삽입되었다고 가정하여 수행됩니다.

    함수의 인수는 각 집계 그룹 내에서 하나의 가상의 행을 식별합니다. 따라서 각 집계 그룹 내에서 이들은 모두 상수 식으로 평가되어야 합니다. 상수 인수 식과 집계의 ORDER BY 절 내의 표현식은 위치별로 일치해야 합니다. 따라서 인수의 수는 동일해야 하며 그들의 유형은 호환 가능해야 합니다.
  • 분석 함수로 사용되는 경우에는 행 r에 대해, PERCENT_RANK는 행 r의 순위에서 1을 뺀 값을 평가 중인 행 수(전체 쿼리 결과 집합 또는 파티션)에서 나눈 값을 계산합니다.

 

 

참고:

Oracle Database Globalization Support Guide의 부록 C는 ORDER BY 절에 대해 문자 값을 비교하는 데 PERCENT_RANK가 사용하는 정렬 규칙을 정의하는 정렬 결정 규칙(collation determination rules)에 대한 정보를 제공합니다.

 

집계 예제

다음 예제는 급여가 $15,500이고 커미션 비율이 5%인 가상의 직원의 백분율 순위를 계산합니다. 이 예제는 샘플 테이블인 hr.employees에서 수행됩니다.

SELECT PERCENT_RANK(15000, .05) WITHIN GROUP
       (ORDER BY salary, commission_pct) "Percent-Rank" 
  FROM employees;

Percent-Rank
------------
  .971962617

 

분석 예제

다음 예제는 각 직원에 대해 해당 직원의 급여가 속한 부서 내에서의 백분율 순위를 계산합니다.

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, last_name;

DEPARTMENT_ID LAST_NAME                     SALARY         PR
------------- ------------------------- ---------- ----------
           10 Whalen                          4400          0
           40 Mavris                          6500          0
              Grant                           7000          0
. . .
           80 Vishney                        10500 .181818182
           80 Zlotkey                        10500 .181818182
           30 Khoo                            3100         .2
. . .
           50 Markle                          2200 .954545455
           50 Philtanker                      2200 .954545455
           50 Olson                           2100          1
. . .

 


출처: 오라클 레퍼런스

원문 링크: Oracle PERCENT_RANK 함수 문서

 

반응형

댓글