PostgreSQL-确定总数的百分比

PostgreSQL-确定总数的百分比,sql,postgresql,pgadmin,psql,Sql,Postgresql,Pgadmin,Psql,我有一张桌子 ID | NUMBER ------|---------- 1 | 102 2 | 145 3 | 512 4 | 231 5 | 94 我想对所有的“数字”求和,并在每一行返回一个百分比值。 结果应该如下所示: ID | NUMBER | PERC ------|--------------|------- 1 | 102 |

我有一张桌子

ID    |    NUMBER
------|----------
1     |      102
2     |      145
3     |      512
4     |      231
5     |       94
我想对所有的“数字”求和,并在每一行返回一个百分比值。 结果应该如下所示:

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;

但你们肯定知道,那个“数字”必须出现在groupby或aggregate函数中,所以我不能使用它。如何做到这一点?

您可以将
sum
over
子句一起使用:

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

您是否希望保护它不受零除错误的影响?