我目前正在尝试找到最好的方法来获得列的百分比,该列是两个日期之间的天数的计算。然后我想找出平均值。
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等等。如何处理小数精度为平均值的日期跨度计算?
发布于 2020-02-19 05:05:27
很可能,您将面临整数除法:因为除法分子和分母都是整数,所以数据库会强制将除法结果转换为整数结果。
许多数据库都实现了这种行为- SQL Server就是其中之一,我怀疑您正在使用这种行为(您还标记了问题MySQL,但这个问题不做整数除法-您的方括号引号语法也表明了这一点)。
解决这个问题的一种方法是将其中一个数字设为十进制,如下所示:
CAST(
AVG(DATEDIFF(SECOND, [DateStart], [DateEnd])/36000.00)
AS DECIMAL(10,2)
) [Avg Days]https://stackoverflow.com/questions/60289448
复制相似问题