【问题标题】:AVG() not accurate in SQL ServerAVG() 在 SQL Server 中不准确
【发布时间】:2013-08-31 21:14:45
【问题描述】:

我正在尝试使用 SQL Server Management Studio 2008 为具有 where 条件的列计算 Avg()。当我在 SQL 查询中尝试 AVG(column-name) 时,它给了我一个四舍五入的值而不是十进制值。

当我将数据集复制到 MS Excel 中时,我在 SQL 中得到了精确的 4 位十进制值(例如:10.74),我只得到 10。感谢任何帮助。

我的查询:

SELECT Item, AVG(POOrdrQty) 
FROM [tableWR] 
where Item ='737' AND POOrdrQty <((select AVG([POOrdrQty]) FROM [tableWR]) * 2) 
group by Item

【问题讨论】:

  • 请向我们展示您的查询、您的数据、输出和所需的输出。
  • SELECT Item, AVG(POOrdrQty) FROM [tableWR] where Item ='737' AND POOrdrQty
  • 项目(无列名)737 82
  • 以后请将该信息添加到您的问题中。这次我继续为你做了。
  • 你的数据库字段是什么数据类型?

标签: sql sql-server average


【解决方案1】:

avg(column_name * 1.0) 将数据类型转换为浮点数

【讨论】:

    【解决方案2】:

    avg 聚合的结果类型与您用作参数的值类型相同。如果字段是int,则结果将四舍五入以适合类型。

    转换您用作参数的值:avg(cast(column-name as float))

    【讨论】:

    • 谢谢,这正是我想要的。
    • 头疼了半个小时才找到这个。谢谢!
    猜你喜欢
    • 2021-03-19
    • 2012-11-20
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多