PostgreSQL-определение процента от общего числа

у меня есть таблица

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;

но, как вы знаете наверняка, это "число" должно отображаться в GROUP BY или aggregate function, поэтому я не могу его использовать. Как это сделать?

1 ответов


можно использовать sum С over статья:

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

пример в SQL Fiddle.