我有一个问题,我不知道是否有可能解决它。也就是说,我有一个MySQL数据库,它有两个列: id和date。我如何制定一个查询来计算所有日期的平均差异?例如,在1到2之间-日期是14天;
发布于 2020-04-17 10:31:32
平均值只是最大值减去最小值除以数值数的1。所以:
select datediff(max(date), min(date)) / nullif(count(*) - 1, 0)
from t;如果看一下数字,就可以很容易地看到这一点:
1
5 . . . 4
10 . . . 5
19 . . . 9平均差值为(4 +5+ 9) /3= 6。
(19 - 1) /3=6也不是巧合。这是数学上的必然。
你可以很容易地看到这个。平均差别是:
( (5 - 1) + (10 - 5) + (19 - 10) ) / 3您可以重新排列这个:
( -1 + (5 - 5) + (10 - 10) + 19 ) / 3即:
( 19 - 1 ) / 3发布于 2020-04-17 10:41:18
希望这能帮上忙
SELECT AVG(DATEDIFF(Date, NextDate))
FROM ( SELECT
Date,
( SELECT MIN(Date)
FROM YourTable T2
WHERE T2.Date > T1.Date
) AS NextDate
FROM YourTable T1
) AS T*使用您的表名作为YourTable
在行中的两个日期之间存在不重叠的日期范围时,此操作是有效的。如果范围也是0,那么使用>=而不是>
https://stackoverflow.com/questions/61269271
复制相似问题