在我的一个查询中,AVG
函数似乎返回了一个整数。
select ..., AVG(e.employee_level)avg_level
如何使它返回浮点数?我尝试强制类型转换,但是所有 avg_level
的行仍然是整数。
在我的一个查询中,AVG
函数似乎返回了一个整数。
select ..., AVG(e.employee_level)avg_level
如何使它返回浮点数?我尝试强制类型转换,但是所有 avg_level
的行仍然是整数。
CAST(AVG(field) AS FLOAT)
?AVG(field)
仍会返回相同的答案,即INT类型。将其转换为FLOAT不会对你有所帮助。然而,AVG(CAST(field AS FLOAT))
非常不同,可能是你想要的。 [对这个答案的赞同加1] - MatBailie...AVG(1.0 * e.employee_level)...
也可以,并且更易读懂。1.0
视为定点数NUMERIC值,而不是浮点数FLOAT。这可能会产生类似的效果,甚至在某些情况下效果更好,但并非完全相同。因此,我倾向于在我的代码中使用显式CAST/CONVERT。这样你就可以 知道 事物的数据类型,而不是依赖于数据类型优先级和隐式转换。 - MatBailieAVG(Cast(e.employee_level as DECIMAL(10,0))
这将在MySQL中起作用 您正在将答案转换为小数点后0位的值,因此这将起作用 假设答案是945.454,那么AVG(Cast(e.employee_level as DECIMAL(10,0)))将给出945 而AVG(Cast(e.employee_level as DECIMAL(10,1)))将给出945.5 希望您得到了答案