我有一张桌子
ID | NUMBER
------|----------
1 | 102
2 | 145
3 | 512
4 | 231
5 | 94
我希望总结所有' NUMBER'并从总计返回每行的%值。 结果应如下所示:
ID | NUMBER | PERC
------|--------------|-------
1 | 102 | 9.4
2 | 145 | 13.4
3 | 512 | 47.2
4 | 231 | 21.3
5 | 94 | 8.7
到目前为止,我有类似的内容:
SELECT (number/sum(number)*100) AS perc
FROM mytable;
但正如您所知道的那样,那个数字'必须出现在GROUP BY或聚合函数中,因此我无法使用它。怎么做?
答案 0 :(得分:18)
您可以将sum
与over
子句一起使用:
SELECT 100.0 * number / sum(number) over () as perc
FROM mytable;