如何按日期顺序计算日期之间的平均天数

How to calculate average number of days between dates in date order

Table 包含订单日期

create table orderdate ( orderdate date not null )

如何计算 table 中日期之间的平均天数。 需要按日期顺序计算相邻日期之间的差异,以找到订单之间的平均日期数。

将此数字添加到上次订购日期会得出预计的下一次订购日期。

例如,如果 table 包含

2019-09-10
2019-09-21
2019-09-25

订单之间的差异为 10 天和 4 天,平均差异为

(10+4)/2 = 7 days

下一个订单预计日期是 2019-09-25 + 7 = 2019-10-02

正在使用

PostgreSQL 9.4.19

您可以使用聚合:

select ( max(date) - min(date) ) / nullif(count(*) - 1, 0) as avg_duration
from t;

间隙数比计数少1。因此,平均值是总持续时间除以间隔数。

先计算相邻日期的差值,然后取平均值:

SELECT avg(CAST(days_between AS double precision))
FROM (SELECT orderdate
             - (lag(orderdate) OVER (ORDER BY orderdate)) AS days_between
      FROM orderdate) AS q;

我转换为 double precision,因为两个 date 之间的差异是 integer