32

在我的一个查询中,该AVG函数似乎返回了一个 int。

select ..., AVG(e.employee_level)avg_level

如何让它返回浮点值?我尝试转换它,但我所有的行avg_level仍然是整数。

4

4 回答 4

53

尝试这样做:

AVG(Cast(e.employee_level as Float)) as avg_level

我还发现了这个主题,您可以在其中找到另一种方法,但我没有使用它,也不知道确切是否有效。

于 2012-06-19T17:29:25.493 回答
4

铸造更确定,但...AVG(1.0 * e.employee_level)...也可以这样做,并且可以更清晰。

于 2012-06-19T17:33:09.967 回答
1

返回的类型AVG取决于传递给函数的表达式的评估类型。

在此处输入图像描述

例如,如果您希望结果为float,则需要确保您的列或表达式类型为float

于 2018-10-02T08:05:56.870 回答
-1

AVG(Cast(e.employee_level as DECIMAL(10,O))

这将在 MYSQL 中起作用,您正在使用 ANS 将值设为 0 小数,因此假设 ANS 为 945.454,​​这将起作用,因此 AVG(Cast(e.employee_level as DECIMAL(10,O)) 将给出 945 和 AVG(Cast( e.employee_level 作为 DECIMAL(10,1)) 将给 945.5 希望你得到答案

于 2021-09-03T08:31:04.383 回答