聚合函数 AVG 和 SUM 正在更改我在 Sybase IQ 中的数据类型大小列
Aggregate function AVG and SUM is changing my data type size column in SybaseIQ
我在 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
...
...
这是为什么?如果尝试将其四舍五入,它也不起作用,
我能做什么?
感谢您的解答。
AS 建议我尝试做
cast(AVG_Salary) as decimal (12,9) --the size of my destination column
也不行。
我收到错误 "Data type conversion is not possible"
如果你不想要这个,使用 cast(avg(...) as numeric(9,4))
as stander SybaseIQ 聚合函数显示完整结果,但是
在您的目的地 table 中,十进制应该不是问题。
如果您尝试了转换器
cast(AVG_Salary) as decimal (12,9)
而您遇到 "Data type conversion is not possible" 的问题只是因为您的数据太大了。
我的意思是可以这样做:
AVG_Salary cast(AVG_Salary) as decimal (12,9)
------------------ ------------------------------------
1,6655040959559 1,665504095 --ok
12,666664554543 12,666664554 --ok
1123,8190832083 --Error
问题出在你的聚合函数 SUM 上,可能它使结果如此之大,在那种情况下 "Cast" 不起作用,因为转换 reduce(round) decimals 但它不是减少你的数字的方法.这就是为什么您会收到 "Data type conversion" 的问题
不是小数问题,是你的数字太大了。
我在 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
...
...
这是为什么?如果尝试将其四舍五入,它也不起作用,
我能做什么?
感谢您的解答。
AS 建议我尝试做
cast(AVG_Salary) as decimal (12,9) --the size of my destination column
也不行。 我收到错误 "Data type conversion is not possible"
如果你不想要这个,使用 cast(avg(...) as numeric(9,4))
as stander SybaseIQ 聚合函数显示完整结果,但是 在您的目的地 table 中,十进制应该不是问题。 如果您尝试了转换器
cast(AVG_Salary) as decimal (12,9)
而您遇到 "Data type conversion is not possible" 的问题只是因为您的数据太大了。
我的意思是可以这样做:
AVG_Salary cast(AVG_Salary) as decimal (12,9)
------------------ ------------------------------------
1,6655040959559 1,665504095 --ok
12,666664554543 12,666664554 --ok
1123,8190832083 --Error
问题出在你的聚合函数 SUM 上,可能它使结果如此之大,在那种情况下 "Cast" 不起作用,因为转换 reduce(round) decimals 但它不是减少你的数字的方法.这就是为什么您会收到 "Data type conversion" 的问题 不是小数问题,是你的数字太大了。