繁体   English   中英

SQL平均数然后尾随数字

[英]SQL avg then trailing numbers

我正在尝试获取平均值,然后删除尾随的无意义的零(对于SQL来说是新的),但我不明白为什么它不会删除它们,我有错误的想法吗?

到目前为止,我有;

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

我认为您正在寻找以下cast

select cast(17.800000 as dec(3,1))

结果:

val
----
17.8

所以你查询将

SELECT total, cast(AVG(total) as dec(3,1))

考虑到您只需要2位数字. 如果需要更多数字,可以相应地进行调整。

演示

假设您正在使用SQL Server,则可以将答案转换为带有一个小数点的小数:

选择cast(avg(total)作为十进制(9,1))

此SQLFiddle显示它: 链接

SELECT 
 TRUNCATE(AVG(myFloat), 2), 
 AVG(myFloat), 
 ROUND(AVG(myFloat), 2)
 FROM docs

您可能应该使用ROUND而不是TRUNCATE

由于浮点运算,小数点后的内容是奇数,并且在某些情况下,浮点运算在内部被计算为.009999999而不是.01000000000

我相信这些使用CAST答案可能会有相同的截断问题。 您只想避免在删除超出您感兴趣的小数位时避免强制转换或截断。请明确说明您的操作,以后会少出现一些错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM