首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql平均日期差

问MySql平均日期差
EN

Stack Overflow用户
提问于 2020-04-17 10:21:20
回答 2查看 176关注 0票数 1

我有一个问题,我不知道是否有可能解决它。也就是说,我有一个MySQL数据库,它有两个列: id和date。我如何制定一个查询来计算所有日期的平均差异?例如,在1到2之间-日期是14天;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-17 10:31:32

平均值只是最大值减去最小值除以数值数的1。所以:

代码语言:javascript
复制
select datediff(max(date), min(date)) / nullif(count(*) - 1, 0)
from t;

如果看一下数字,就可以很容易地看到这一点:

代码语言:javascript
复制
 1
 5       . . . 4
 10      . . . 5
 19      . . . 9

平均差值为(4 +5+ 9) /3= 6。

(19 - 1) /3=6也不是巧合。这是数学上的必然。

你可以很容易地看到这个。平均差别是:

代码语言:javascript
复制
( (5 - 1) + (10 - 5) + (19 - 10) ) / 3

您可以重新排列这个:

代码语言:javascript
复制
( -1 + (5 - 5) + (10 - 10) + 19 ) / 3

即:

代码语言:javascript
复制
( 19 - 1 ) / 3
票数 1
EN

Stack Overflow用户

发布于 2020-04-17 10:41:18

希望这能帮上忙

代码语言:javascript
复制
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,那么使用>=而不是>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61269271

复制
相关文章

相似问题

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