在我的一个查询中,似乎AVG
函数返回一个int。SQL AVG返回一个int
select ..., AVG(e.employee_level)avg_level
如何获取它返回浮点值?我尝试投它,但我所有的行avg_level
仍然是整数。
在我的一个查询中,似乎AVG
函数返回一个int。SQL AVG返回一个int
select ..., AVG(e.employee_level)avg_level
如何获取它返回浮点值?我尝试投它,但我所有的行avg_level
仍然是整数。
尝试做这样的:
AVG(Cast(e.employee_level as Float)) as avg_level
而且我发现this话题在这里你可以找到一些另一种方法,但我没有使用它,不知道究竟是否管用。
铸造更确定,但...AVG(1.0 * e.employee_level)...
也可能做到这一点,并且可以更清晰。
它取决于RDBMS。 AFAIK许多RDBMS将'1.0'视为定点NUMERIC值,而不是FLOAT。类似的效果,可能对这种情况更好,但不完全相同。出于这个原因,我倾向于在我的代码中使用明确的CAST/CONVERT。然后你知道什么是数据类型,而不是依赖数据类型的精度和隐式转换。 – MatBailie
AVG()函数在整数上的行为在ANSI标准中没有定义。一些数据库返回一个整数;其他数据库返回一个float。要获得一个浮点数,你可以使用一个明确的转换/转换。或者,我所做的只是乘以1.0。 –