聚合函数 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" 的问题 不是小数问题,是你的数字太大了。