데이터를 집계하다 보면 “전체 대비 비율”을 구할 일이 자주 있습니다.
보통 기본 함수를 사용해 분모 분자를 나눠 계산하기도 하지만, 구조가 더 복잡해지고 가독성이 떨어질 때가 있습니다.
이럴 때 일부 DB(Oracle, Snowflake, Redshift 등)에서 사용할 수 있는 함수가 바로 RATIO_TO_REPORT()입니다.
SELECT region
, SUM(sales) AS total_sales
, RATIO_TO_REPORT(SUM(sales)) OVER () AS ratio
FROM sales
GROUP BY region;
| region | total_sales | ratio |
|---|---|---|
| Seoul | 1000 | 0.3333 |
| Busan | 500 | 0.1667 |
| Daegu | 1500 | 0.5000 |
RATIO_TO_REPORT(expr) OVER ()
→ 지정한 집계값이 전체 합에서 차지하는 비율을 계산합니다.
✔️ 전체 대비 비율을 구할 때는 RATIO_TO_REPORT() 함수로 간결하게 표현할 수 있습니다.
✔️ 일부 분석 엔진(Oracle, Snowflake, Redshift)에서 지원되며, 이외에는 직접 계산식으로 구현해야 합니다.