使用下面的MYSQL代码,我尝试将百分比四舍五入到小数点后两位,尝试了截断和四舍五入,但是当我将输出的所有百分比相加时,得到的数字并不是100%,比如99.9%,99.95%等等
请参阅我更新的完整查询,以显示每种类型的计数、不带舍入的百分比和带舍入的百分比:
select
bondtype,
count(distinct secid) AS Count,
concat(count(distinct secid)/(select count(distinct secid) from wca.bond)*100, '%') as Percentage,
concat(ROUND(count(distinct secid)/(select count(distinct secid) from wca.bond)*100, 2), '%') as Percentage_with_Rounding
from wca.bond
group by bondtype;
以下是我得到的输出:
注意,对于bondtype CS,带四舍五入的百分比应该是0.05%,而不是0.04%,所有其他计数在四舍五入后看起来都是正确的,但我觉得奇怪的是这个计数。提前谢谢
最佳答案
这样地
选择cast(round((1*100.0)/9),2)作为decimal(5,2)
选择
secidtype,
取整(截断(concat(count(distinct secid)/(从证券中选择count(distinct secid)*100.0),2))作为百分比
来自wca.bond
按secidtype分组;