【问题标题】:How to convert AVG() function to decimal in SQL SERVER如何在 SQL SERVER 中将 AVG() 函数转换为十进制
【发布时间】:2017-03-11 22:09:06
【问题描述】:

帮助! 我有一张如下所示的表格。

SELECT *
FROM tblshipline 
WHERE MethodShipped = 'FEDEX'

然后我得到

Qtyshipped
2
3
15
3
10
9
10

现在的问题是计算 qtyshipped 的 AVERAGE 并将其四舍五入为 2 个十进制数。

我的代码是

SELECT CONVERT(decimal(8,6), ROUND(AVG(Qtyshipped),2))  
FROM TblShipLine
WHERE MethodShipped= 'FEDEX'

答案应该是 7.430000 , 但它总是返回7.000000。我很感激任何建议,谢谢!

【问题讨论】:

    标签: sql sql-server sql-server-2016


    【解决方案1】:

    在这里,我们获取您的 INT 值并添加 0.0,这是一个快速转换为浮点数的值。然后我们应用 round() 和 convert()

    Declare @YourTable table (Qtyshipped int)
    Insert into @YourTable values
    (2),
    (3),
    (15),
    (3),
    (10),
    (9),
    (10)
    
    Select convert(decimal(8,6),round(Avg(Qtyshipped+0.0),2))
     From  @YourTable
    

    返回

    7.430000
    

    【讨论】:

    • 感谢您的提示。我正在尝试获取类似 7.430000 的表格。我使用下面的代码,终于明白了。 Select ROUND(cast(Avg(Qtyshipped+0.00) as decimal(8,6)),2) From TblShipLine WHERE MethodShipped= 'FEDEX' 非常感谢!
    • @Chao avg(int) 将返回一个 int... 为了避免这种情况,我们只需将 0.0 添加到作为浮点数的隐式转换的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多