计算在该行的过去一小时内具有时间戳的行

时间:2017-11-17 04:25:50

标签: mysql datetime

尝试找到一种计算行的方法,而不对它们进行分组。因为如果我按小时(日期)分组,那么它只会缩小结果。相反,我希望计算行并将该行的任何行添加到该行的过去一小时内。

数据:

date
-------------------
2017-11-01 03:43:00
2017-11-01 03:45:00
2017-11-04 14:14:00
2017-11-04 15:01:00
2017-11-04 15:08:00
2017-11-04 15:12:00
2017-11-04 15:16:00

结果:

date                    count
-------------------     -------------------
2017-11-01 03:43:00     1
2017-11-01 03:45:00     2
2017-11-04 14:14:00     1
2017-11-04 15:01:00     2
2017-11-04 15:08:00     3
2017-11-04 15:12:00     4
2017-11-04 15:16:00     3

1 个答案:

答案 0 :(得分:0)

为此,您可以使用“相关子查询”

select
   `date` 
  , (select count(*) from yourtable t2
     where t2.`date`>= date_sub(t1.`date - INTERVAL 1 HOUR) and t2.`date` <= t1.`date`
    ) as `count`
from yourtable t1

请注意,如果您希望严格计算“过去的行”,请使用less than,而不是查询中的less than or equal