SQL 打印小数点较大的浮点数

SQL prints float with large decimal place

我一直在研究一个解决方案来获得学生的百分比,我只需要小数点后两位,所以我尝试了这个

select ROUND(count(fname) * 100.0/(select count(*) from stud_info  WHERE grade = 'FOUR'),2)as 'Total',
status as 'NutritionalStatus'
from stud_info
where grade = 'FOUR'
group by status

然后它打印出多达 11 位小数的零,你能帮我解决什么问题吗? 我有女士 sql 2014

首先,我建议你这样写:

select status,
       avg(case when grade = 'FOUR' then 1.0 else 0 end) as Total
from stud_info
where grade = 'FOUR'
group by status;

那么如果你想要两位小数,转换成小数:

select status,
       convert(decimal(6, 2),
               avg(case when grade = 'FOUR' then 1.0 else 0 end)
              ) as Total
from stud_info
where grade = 'FOUR'
group by status;

round() 更改 value 但不会更改 type。 application/presentation 层可能仍会决定显示不必要的零。

您也可以使用 format()str() 将值转换为字符串。