RATIO_TO_REPORT是一个分析函数,用于计算某一列的值在指定分组中所占的比率。
语法
RATIO_TO_REPORT(col) over ([partition by xxx]) ;
col
:需要查询的列,如果该值为空,则比率的值也为空。[partition by xxx]
:指定的分组,如果省略该子句,则会计算当前值占指定分组中所有值的比率。
示例
准备测试表格。
CREATE TABLE rtp ( a INT, b INT, c INT ); INSERT INTO rtp (a, b, c) VALUES (1, 5, 4), (1, 5, 6), (2, 3, 10), (2, 7, NULL);
分析函数RATIO_TO_REPORT使用。
计算全表中b值的比例。
SELECT *, ratio_to_report(b) OVER () FROM rtp;
返回结果如下:
a | b | c | ratio_to_report ---+---+----+----------------- 1 | 5 | 4 | 0.25 1 | 5 | 6 | 0.25 2 | 3 | 10 | 0.15 2 | 7 | | 0.35 (4 rows)
对每个a的分组计算比例,计算每个分组内的b值占该组总和的比例。
SELECT *, ratio_to_report(b) OVER (PARTITION BY a) FROM rtp;
返回结果如下:
a | b | c | ratio_to_report ---+---+----+----------------- 1 | 5 | 4 | 0.5 1 | 5 | 6 | 0.5 2 | 3 | 10 | 0.3 2 | 7 | | 0.7 (4 rows)
文档内容是否对您有帮助?