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

3 に答える 3

5

次のようなことを試してください:

CAST(ROUND(100.0 * COUNT(*) / tot, 1) AS DECIMAL(10, 1))
于 2013-06-18T16:10:11.847 に答える
4

変換のためのより良い選択はstr()関数です。(ここに文書化されています。)

さらに、ウィンドウ関数を使用して計算を行うことができます (SQL Server 2005 以降を使用していると仮定します)。私のバージョンのクエリは次のとおりです。

select hi.hostVersion,
       str(((100.0*count(*)) / sum(count(*)) over ()), 5, 2)+'%'
from hostInfo hi
group by hi.hostVersion
于 2013-06-18T16:09:44.880 に答える