首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL GROUP BY子句和使用AVG在DATESPAN计算中获取浮点2精度

问SQL GROUP BY子句和使用AVG在DATESPAN计算中获取浮点2精度
EN

Stack Overflow用户
提问于 2020-02-19 05:04:30
回答 1查看 87关注 0票数 0

我目前正在尝试找到最好的方法来获得列的百分比,该列是两个日期之间的天数的计算。然后我想找出平均值。

代码语言:javascript
复制
SELECT 
    [Filed1],
    [Field2],
    COUNT(items) AS [Total Items],
    CAST(AVG(
            (DATEDIFF(SECOND,
                    [DateStart],
                    [DateEnd])
            )/36000) 
        )AS DECIMAL(10,2)) [Avg Days]
        FROM [MY DB]

我似乎无法获得准确的3.5天或7.1天,它只返回带有两个小数的整数,如5.00、6.00等等。如何处理小数精度为平均值的日期跨度计算?

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 05:05:27

很可能,您将面临整数除法:因为除法分子和分母都是整数,所以数据库会强制将除法结果转换为整数结果。

许多数据库都实现了这种行为- SQL Server就是其中之一,我怀疑您正在使用这种行为(您还标记了问题MySQL,但这个问题不做整数除法-您的方括号引号语法也表明了这一点)。

解决这个问题的一种方法是将其中一个数字设为十进制,如下所示:

代码语言:javascript
复制
CAST(
    AVG(DATEDIFF(SECOND, [DateStart], [DateEnd])/36000.00) 
    AS DECIMAL(10,2)
) [Avg Days]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60289448

复制
相关文章

相似问题

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