2012-10-25 22 views
6

百分比我有一個表PostgreSQL的 - 確定的總

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

回答

18

你可以使用sumover條款:

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

Example at SQL Fiddle.

+1

你可能想保護,對師零錯誤? –