我试图获取平均数,然后删除之后的尾随无意义的零(SQL新手),但我无法理解为什么它不会删除它们,我是否有错误的想法??
到目前为止,我有;
SELECT total,
AVG(total(TRUNCATE(total/1,2))
答案 0 :(得分:0)
我认为您正在寻找cast
,如下所示。
select cast(17.800000 as dec(3,1))
<强>结果:强>
val
----
17.8
所以你的查询将是
SELECT total, cast(AVG(total) as dec(3,1))
考虑到你只需要2位数.
如果你需要更多的数字,你可以相应地调整它。
<强> DEMO 强>
答案 1 :(得分:0)
假设您正在使用SQL Server,那么您可以将答案转换为带小数点后的小数:
选择演员表(平均(总计)为十进制(9,1))
答案 2 :(得分:0)
这个SQLFiddle显示它:link
SELECT
TRUNCATE(AVG(myFloat), 2),
AVG(myFloat),
ROUND(AVG(myFloat), 2)
FROM docs
您应该使用ROUND
代替TRUNCATE
。
由于浮点数学,小数点后的东西是奇数,有时浮点数学在内部计算为.009999999
而不是.01000000000
我相信使用CAST
的这些答案可能会遇到相同的截断问题。
您只是想在删除超出您感兴趣的小数位数时避免强制转换或截断。明确您正在做的事情,稍后会弹出较少的错误。