我有一张桌子
- 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或聚合函数中,因此我无法使用它.怎么做?
你可以使用带有over子句的sum:
- SELECT 100.0 * number / sum(number) over () as perc
- FROM mytable;