2013-06-18 12 views
6

मैं निम्नलिखित प्रश्न हैं:गणना समूह प्रतिशत - एसक्यूएल

SELECT hostVersion, CONVERT(varchar, 100.0 * count(*)/tot,1) + '%' as 'Percent' 
FROM hostInfo, 
(SELECT COUNT(*) as tot FROM hostInfo) x 
GROUP BY hostVersion, tot 

और निम्नलिखित उत्पादन प्राप्त करते हैं:

+--------------------------------+ 
| hostVersion | Percent   | 
+--------------------------------+ 
| 5.0.0 | 26.666666666666% | 
+--------------------------------+ 
| 5.1.0 | 73.333333333333% | 
+--------------------------------+ 

कैसे मैं केवल 1 दशमलव स्थान तक पूर्णांक बनाना? (अर्थात 26.7% & 73.3%)

उत्तर

4

रूपांतरण के लिए एक बेहतर विकल्प str() कार्य है। (here दस्तावेज।)

इसके अतिरिक्त, आप विंडो फ़ंक्शन का उपयोग करके अपनी गणना कर सकते हैं (मानते हैं कि आप SQL Server 2005 या अधिक हाल ही में उपयोग कर रहे हैं)। इस तरह

select hi.hostVersion, 
     str(((100.0*count(*))/sum(count(*)) over()), 5, 2)+'%' 
from hostInfo hi 
group by hi.hostVersion 
+0

विल भी कि PostgreSQL में काम क्वेरी का अपना संस्करण है? – Padagomez

0
SELECT hostVersion, CONVERT(varchar, ROUND(100.0 * count(*)/tot,2),1) + '%' as 'Percent' 
FROM hostInfo, 
(SELECT COUNT(*) as tot FROM hostInfo) x 
GROUP BY hostVersion, tot 
4

कोशिश कुछ:

CAST(ROUND(100.0 * COUNT(*)/tot, 1) AS DECIMAL(10, 1)) 
संबंधित मुद्दे