7

我有一张桌子

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 或聚合函数中,所以我不能使用它。怎么做?

4

1 回答 1

21

您可以sumover子句一起使用:

SELECT  100.0 * number / sum(number) over () as perc
FROM    mytable;

SQL Fiddle 的示例。

于 2012-10-25T11:00:46.380 回答