我有以下查询:
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%)
答案 0 :(得分: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
答案 1 :(得分:4)
尝试这样的事情:
CAST(ROUND(100.0 * COUNT(*) / tot, 1) AS DECIMAL(10, 1))
答案 2 :(得分: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