首页 > 解决方案 > MySQL按彼此相隔X天的日期分组

问题描述

我有一个具有此架构的 mysql 表:

id  |  date 
------------------------------------------
  1    2019-11-11    
  2    2019-11-10    
  3    2019-09-01
  4    2019-08-01

如果日期彼此相隔 X 天,我希望将它们分组并计算每个组的观察计数。例如设置X = 14天数,我希望输出是这样的:

id |  count
------------------------------------------
1  | 2
2  | 1
3  | 1
4  | 1

原因是从 2019 年 11 月 11 日开始到 14 天后,在 14 天内有 2 次观察。对于所有其他观察,在观察后的 14 天内只有一次观察。

标签: mysql

解决方案


例如:

SELECT x.id
     , COUNT(y.id) total 
  FROM my_table x 
  JOIN my_table y 
    ON x.date BETWEEN y.date AND y.date + INTERVAL 14 DAY 
 GROUP 
    BY x.id;

推荐阅读