我正在尝试创建“总计百分比”列,当前使用的是没有问题的子查询:
SELECT ID, COUNT(*), COUNT(*) / (SELECT COUNT(*)
FROM DATA) AS % OF TOTAL FROM DATA GROUP BY ID;
| ID | COUNT | % OF TOTAL |
| 1 | 100 | 0.10 |
| 2 | 800 | 0.80 |
| 3 | 100 | 0.10 |
但是,由于这个问题范围之外的原因,我正在寻找是否有任何方法可以在不使用子查询的情况下完成此任务。本质上,应用程序使用SQL查询之外的逻辑来确定该WHERE
子句是什么并将其注入查询中。该逻辑不考虑上述子查询的存在,因此在回溯并重建所有现有逻辑以解决此情况之前,我想知道是否首先有其他解决方案。
我试图用一个窗口函数来实现这种效果,但无济于事。
使用窗口功能:
SELECT ID, COUNT(*),
COUNT(*) / SUM(COUNT(*)) OVER () AS "% OF TOTAL"
FROM DATA
GROUP BY ID;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句