然后SQL avg跟踪数字

时间:2017-11-21 15:16:25

标签: mysql sql

我试图获取平均数,然后删除之后的尾随无意义的零(SQL新手),但我无法理解为什么它不会删除它们,我是否有错误的想法??

到目前为止,我有;

 SELECT total,
 AVG(total(TRUNCATE(total/1,2))

3 个答案:

答案 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的这些答案可能会遇到相同的截断问题。 您只是想在删除超出您感兴趣的小数位数时避免强制转换或截断。明确您正在做的事情,稍后会弹出较少的错误。