我在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它也不起作用。我增加了“数据类型转换不可能”的错误。
发布于 2017-11-15 08:02:51
使用聚合函数的标准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 问题来自于你的聚合函数和,它可能使结果如此之大,在这种情况下,“强制转换”不起作用,因为cast减少(圆形)小数,但这不是减少你的数字的方法。这就是为什么您要接收“数据类型转换”的问题--这不是十进制问题,而是您的数字太大的问题。
发布于 2017-11-14 22:54:02
如果您不想这样,请使用cast(avg(.)数字(9,4))
https://stackoverflow.com/questions/47285776
复制相似问题