我在查询中有这一行:
CASE WHEN count(n.Counter) <> 0 THEN (cast(count(n.Counter) as float)/count(t.Counter)) * 100 ELSE 0 END as percent
我得到的结果如79.565974946。 我希望获得80%的结果(小数点后没有数字,并且&#39;%&#39;符号)。 我怎么能这样做?
答案 0 :(得分:1)
您需要find
然后,因为您正在尝试进行格式化,请在添加%
之前转换为字符串:
CONVERT(varchar(20),
ROUND(
CASE WHEN count(n.Counter) <> 0
THEN (cast(count(n.Counter) as float)/count(t.Counter)) * 100
ELSE 0 END
,0)) + '%' as percent
此外,这里可能存在拼写错误 - 看起来您正试图避免除以零错误,但是您正在测试错误的操作数(n.Counter
而不是t.Counter
)所以你可能仍会从这段代码中得到除零。
答案 1 :(得分:1)
如果使用MySQL,只需使用ROUND
功能。
CASE WHEN count(n.Counter) <> 0 THEN ROUND(cast(count(n.Counter) as float)/count(t.Counter)) * 100 ELSE 0 END as percent
答案 2 :(得分:1)
您在哪里显示数据?添加%应该在前端应用程序中完成。如果你使用
,只需使用它并将其格式化为forntround(
case when count(n.counter) <> 0
then (cast(count(n.counter) as float)/count(t.counter)) * 100
else 0 end
,0))
答案 3 :(得分:1)
试试这个:
CASE WHEN count(n.Counter) <> 0 THEN round((cast(count(n.Counter) as float)/count(t.Counter)) * 100,0) ELSE 0 END as percent