- 카테고리:
윈도우 함수 (일반)
RATIO_TO_REPORT¶
그룹 내의 값 합계에 대한 그룹 내의 값 비율을 반환합니다. expr1
이 null로 평가되거나 그룹 내 expr1
의 합계가 0으로 평가되는 경우, RATIO_TO_REPORT는 null을 반환합니다.
구문¶
RATIO_TO_REPORT( <expr1> ) [ OVER ( [ PARTITION BY <expr2> ] [ ORDER BY <expr3> ] ) ]
인자¶
expr1
이는 숫자 데이터 타입(INTEGER, FLOAT, DECIMAL 등)으로 평가되는 식입니다.
expr2
분할하는 선택적 식입니다.
expr3
각 파티션 내에서 순서를 지정하는 선택적 식입니다. 이 함수의 경우, 파티션 내의 순서는 출력에 영향을 미치지 않습니다.
이 함수에서, 모든 윈도우 함수와 마찬가지로 이 ORDER BY는 전체 쿼리 출력의 순서를 제어하지 않습니다.
사용법 노트¶
RATIO_TO_REPORT는 다음과 같이 계산됩니다.
현재 행에 대한
expr1
인자의 값 / 파티션에 대한expr1
인자의 합계OVER() 절의 ORDER BY 하위 절은 다른 윈도우 함수와의 구문 일관성을 위해 이 함수에서 허용되지만, ORDER BY는 계산에 영향을 미치지 않습니다. Snowflake는 이 함수 사용 시 OVER 절에 ORDER BY 하위 절을 포함하지 않을 것을 권장합니다.
예¶
이 간단한 예는 각 개별 매장에서 생성된 매장 체인 이익의 백분율을 보여줍니다.
CREATE TABLE store_profit ( store_ID INTEGER, province VARCHAR, profit NUMERIC(11, 2)); INSERT INTO store_profit (store_ID, province, profit) VALUES (1, 'Ontario', 300), (2, 'Saskatchewan', 250), (3, 'Ontario', 450), (4, 'Ontario', NULL) -- hasn't opened yet, so no profit yet. ;SELECT store_ID, profit, 100 * RATIO_TO_REPORT(profit) OVER () AS percent_profit FROM store_profit ORDER BY store_ID; +----------+--------+----------------+ | STORE_ID | PROFIT | PERCENT_PROFIT | |----------+--------+----------------| | 1 | 300.00 | 30.00000000 | | 2 | 250.00 | 25.00000000 | | 3 | 450.00 | 45.00000000 | | 4 | NULL | NULL | +----------+--------+----------------+
이는 해당 지방의 각 매장에서 생성된 각 지방 내 이익의 백분율을 보여줍니다.
SELECT province, store_ID, profit, 100 * RATIO_TO_REPORT(profit) OVER (PARTITION BY province) AS percent_profit FROM store_profit ORDER BY province, store_ID; +--------------+----------+--------+----------------+ | PROVINCE | STORE_ID | PROFIT | PERCENT_PROFIT | |--------------+----------+--------+----------------| | Ontario | 1 | 300.00 | 40.00000000 | | Ontario | 3 | 450.00 | 60.00000000 | | Ontario | 4 | NULL | NULL | | Saskatchewan | 2 | 250.00 | 100.00000000 | +--------------+----------+--------+----------------+