2013-06-18 2 views
6

I가 다음 쿼리 :계산 그룹 비율 - 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 

그리고 다음과 같은 결과가 나타납니다

+--------------------------------+ 
| 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))