2013-06-18 17 views
6

Mam następujące zapytanie:Oblicz grupa procent do 2 miejsc po przecinku - SQL

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

I pojawia się następujący komunikat:

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

Jak zaokrąglić tylko 1 miejsca po przecinku? (To jest 26,7% 73,3%) &

Odpowiedz

4

Lepszym wyborem dla konwersji jest funkcją str(). (Dokumentacja: here.)

Ponadto można wykonać obliczenia za pomocą funkcji okna (zakładając, że używany jest program SQL Server 2005 lub nowszy). Oto moja wersja zapytania:

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

Will, które również działają w 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

spróbować czegoś takiego:

CAST(ROUND(100.0 * COUNT(*)/tot, 1) AS DECIMAL(10, 1)) 
Powiązane problemy