2012-10-25 17 views
6

का प्रतिशत निर्धारण मैं एक मेज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; 

लेकिन आपको यह सुनिश्चित करने के लिए पता है, कि 'संख्या' ग्रुप द्वारा या समेकित फ़ंक्शन में आने चाहिए तो मैं इसका उपयोग नहीं कर सकते उसको कैसे करे?

उत्तर

18

आप एक over खंड के साथ sum इस्तेमाल कर सकते हैं:

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

Example at SQL Fiddle.

+1

आप की रक्षा के लिए पसंद कर सकते हैं कि विभाजन-दर-शून्य त्रुटियों के खिलाफ? –