2012-10-25 22 views
6

yüzdesi belirlenmesi Bir tabloPostgreSQL - Bir Toplam

ID | NUMBER 
------|---------- 
1  |  102 
2  |  145 
3  |  512 
4  |  231 
5  |  94 

ve tüm 'NUMARASI' toplamı ve her bir satıra toplam% oranını iade etmek istiyorum. Sonucu aşağıdaki gibi görünmelidir:

ID | NUMBER | PERC 
------|--------------|------- 
1  |  102  | 9.4 
2  |  145  | 13.4 
3  |  512  | 47.2 
4  |  231  | 21.3 
5  |  94  | 8.7 

Şu ana kadar böyle bir şey var: 'numara' GROUP BY veya toplama işlevi bulunması gerektiğini,

SELECT (number/sum(number)*100) AS perc 
FROM mytable; 

ama emin bildiğiniz gibi ben kullanamazsın. Bu nasıl yapılır?

cevap

18

Bir over maddesi ile sum kullanabilirsiniz:

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

Example at SQL Fiddle.

+1

Saklaman isteyebileceğini söyledi bölünme-by-sıfır hatalara karşı? –