Fra*_*lle 2 sql postgresql window-functions
有人可以指示我如何在Postgres数据库中安装分析功能,尤其是ratio_to_report函数吗?
我尝试搜索postgres提供的模块,但是没有看到包含该功能的模块。
RATIO_TO_REPORT是一个分析函数。它计算一个值与一组值之和的比率。如果expr评估为null,则比率与报告的值也评估为null。
您根本不需要导入特定功能。使用windowed的Postgresql等效项SUM:
SELECT ID, val, 1.0 * val / NULLIF(SUM(val) OVER(),0) AS ratio_to_report
FROM tab
Run Code Online (Sandbox Code Playgroud)
输出:
????????????????????????????????????
? id ? val ? ratio_to_report ?
????????????????????????????????????
? 1 ? 10 ? 0.16666666666666666 ?
? 2 ? 10 ? 0.16666666666666666 ?
? 3 ? 20 ? 0.3333333333333333 ?
? 4 ? 20 ? 0.3333333333333333 ?
????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
要模拟,PARTITION BY您可以使用:
SELECT ID, val, category,
1.0 * val / NULLIF(SUM(val) OVER(PARTITION BY category),0) AS ratio_to_report
FROM tab
Run Code Online (Sandbox Code Playgroud)
输出:
????????????????????????????????????????????
? id ? val ? category ? ratio_to_report ?
????????????????????????????????????????????
? 1 ? 10 ? a ? 0.25 ?
? 2 ? 10 ? a ? 0.25 ?
? 3 ? 20 ? a ? 0.5 ?
? 4 ? 20 ? b ? 1 ?
????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)