首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聚合函数AVG和SUM正在更改SybaseIQ中的数据类型大小列

聚合函数AVG和SUM正在更改SybaseIQ中的数据类型大小列
EN

Stack Overflow用户
提问于 2017-11-14 12:21:48
回答 2查看 135关注 0票数 0

我在Sybase Iq中收到一个错误,因为聚合函数(AVG和SUM)正在改变我的列的大小,当我在目标列中插入聚合函数列的值时,结果对于目标列是如此大。

示例:

代码语言:javascript
复制
            Salary
          -----------    
            0,4565
            0,4555
            0,4399
             ..
             ..

在我的程序中我需要写

代码语言:javascript
复制
        SUM(salary)/AVG(salary)

当我写的时候

代码语言:javascript
复制
       select  SUM(salary)/AVG(salary) as AVG_Salary
          from mytable
             group by salary

作为结果,我得到了

代码语言:javascript
复制
                AVG_Salary
             ----------------
            0,425000000000000000000000000  
            0,455000000000000000000000000
            0,442132124300000000000000000
            1,545646464743879540386969949
              ... 
              ...

为什么会这样呢?如果试着绕过它,它也不起作用,

我能做什么?

谢谢你的回答。

作为建议,我试着去做

代码语言:javascript
复制
   cast(AVG_Salary) as decimal (12,9)  --the size of my destination column

它也不起作用。我增加了“数据类型转换不可能”的错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-15 08:02:51

使用聚合函数的标准SybaseIQ显示了完整的结果,但是在目标表中小数点不应该是一个问题。如果你试过转换器

代码语言:javascript
复制
    cast(AVG_Salary) as decimal (12,9)  

而且您有“数据类型转换不可能”的问题,这仅仅是因为您的数据太大了。

我的意思是有可能这样做:

代码语言:javascript
复制
            AVG_Salary           cast(AVG_Salary) as decimal (12,9)     
        ------------------      ------------------------------------    
          1,6655040959559          1,665504095    --ok                  
          12,666664554543          12,666664554   --ok
          1123,8190832083          --Error  

问题来自于你的聚合函数和,它可能使结果如此之大,在这种情况下,“强制转换”不起作用,因为cast减少(圆形)小数,但这不是减少你的数字的方法。这就是为什么您要接收“数据类型转换”的问题--这不是十进制问题,而是您的数字太大的问题。

票数 2
EN

Stack Overflow用户

发布于 2017-11-14 22:54:02

如果您不想这样,请使用cast(avg(.)数字(9,4))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47285776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档