- 카테고리:
윈도우 함수 (일반)
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 절을 포함하지 않는 것이 좋습니다.
예¶
이 간단한 예는 각 개별 매장에서 생성된 매장 체인 이익의 백분율을 보여줍니다.
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 |
+--------------+----------+--------+----------------+