我在Sybase Iq中收到错误,因为聚合功能(AVG和SUM(正在更改我的列的大小,当我在目标列中插入聚合功能列的值时,目标列的结果是如此之大。
例:
Salary
-----------
0,4565
0,4555
0,4399
..
..
在我的程序中,我需要写
SUM(salary)/AVG(salary)
当我写的时候
select SUM(salary)/AVG(salary) as AVG_Salary
from mytable
group by salary
我收到的结果
AVG_Salary
----------------
0,425000000000000000000000000
0,455000000000000000000000000
0,442132124300000000000000000
1,545646464743879540386969949
...
...
这是为什么呢?如果尝试四舍五入,它也不起作用,
我能做什么?
感谢您的回答。
作为建议,我尝试做
cast(AVG_Salary) as decimal (12,9) --the size of my destination column
它也不起作用。我收到错误"数据类型转换是不可能的"
作为具有聚合函数的标准 SybaseIQ 显示完整结果,但十进制在目标表中应该不是问题。如果您尝试过转换器
cast(AVG_Salary) as decimal (12,9)
并且您遇到了"数据类型转换是不可能的"的问题,这仅仅是因为您的数据太大了。
我的意思是可以做到这一点:
AVG_Salary cast(AVG_Salary) as decimal (12,9)
------------------ ------------------------------------
1,6655040959559 1,665504095 --ok
12,666664554543 12,666664554 --ok
1123,8190832083 --Error
问题来自您的聚合函数 SUM,可能它使结果如此之大,在这种情况下,"Cast"不起作用,因为 cast 减少了(四舍五入(小数,但它不是减少数字的方法。 这就是为什么您收到"数据类型转换"的问题这不是十进制问题,而是您的数字太大的问题。
如果你不想这样,请使用 cast(avg(...( 作为数字(9,4((