RATIO_TO_REPORT 창 함수
창 또는 파티션에서 값의 합에 대한 임의의 값 비율을 계산합니다. 값의 비율을 구하는 공식은 다음과 같습니다.
value of
ratio_expression argument for the current row / sum of
ratio_expression argument for the window or partition
다음은 위와 같은 공식의 사용을 나타내는 데이터 세트입니다.
Row# Value Calculation RATIO_TO_REPORT 1 2500 (2500)/(13900) 0.1798 2 2600 (2600)/(13900) 0.1870 3 2800 (2800)/(13900) 0.2014 4 2900 (2900)/(13900) 0.2086 5 3100 (3100)/(13900) 0.2230
반환 값의 범위는 0부터 1까지입니다(0과 1 포함). ratio_expression이 NULL이면 반환 값은 NULL
입니다. partition_expression의 값이 고유한 경우 함수는 해당 값에 대해 1
을 반환합니다.
구문
RATIO_TO_REPORT ( ratio_expression ) OVER ( [ PARTITION BY partition_expression ] )
인수
- ratio_expression
-
비율을 결정할 값을 제공하는 표현식(열 이름 등)입니다. 이 표현식은 숫자 데이터 형식을 갖거나, 혹은 묵시적으로 1로 변환될 수 있어야 합니다.
그 외에 다른 분석 함수는 ratio_expression에서 사용할 수 없습니다.
- OVER
-
창 파티션을 지정하는 절입니다. OVER 절에는 창 순서 또는 창 프레임 명세가 포함될 수 없습니다.
- PARTITION BY partition_expression
-
선택 사항. OVER 절에서 각 그룹의 레코드 범위를 설정하는 표현식입니다.
반환 타입
FLOAT8
예시
아래 예에서는 WINSALES 테이블을 사용합니다. WINSALES 테이블 생성 방법에 대한 자세한 내용은 창 함수 예제를 위한 샘플 테이블 섹션을 참조하세요.
다음 예에서는 모든 셀러 수량의 합계에 대한 셀러 수량의 각 행의 보고서 대비 비율 값을 계산합니다.
select sellerid, qty, ratio_to_report(qty) over() from winsales order by sellerid;
sellerid qty ratio_to_report -------------------------------------- 1 30 0.13953488372093023 1 10 0.046511627906976744 1 10 0.046511627906976744 2 20 0.09302325581395349 2 20 0.09302325581395349 3 30 0.13953488372093023 3 20 0.09302325581395349 3 15 0.06976744186046512 3 10 0.046511627906976744 4 10 0.046511627906976744 4 40 0.18604651162790697
다음은 파티션별로 각 판매자의 판매 수량에 대한 비율을 계산하는 예입니다.
select sellerid, qty, ratio_to_report(qty) over(partition by sellerid) from winsales;
sellerid qty ratio_to_report ------------------------------------------- 2 20 0.5 2 20 0.5 4 40 0.8 4 10 0.2 1 10 0.2 1 30 0.6 1 10 0.2 3 10 0.13333333333333333 3 15 0.2 3 20 0.26666666666666666 3 30 0.4