mysql中记录组之间的空闲时间段

时间:2014-08-11 11:29:22

标签: mysql sql date

我将使用mysql.here我的表

来闲置和运行汽车的时间段

速度(kmph)| CDATE

<00> 00.00 | 2014-08-11 00:00:01
00.00 | 2014-08-11 01:01:01
00.00 | 2014-08-11 03:03:41
00.00 | 2014-08-11 05:01:01
00.00 | 2014-08-11 08:20:01
50.88 | 2014-08-11 08:20:02
100.88 | 2014-08-11 09:40:22

00.00 | 2014-08-11 10:20:23
00.00 | 2014-08-11 11:10:33
00.00 | 2014-08-11 13:30:56
50.88 | 2014-08-11 13:30:57
100.88 | 2014-08-11 15:10:22

我需要的是,

汽车的空闲时间是

2014-08-11 00:00:01至2014-08-11 08:20:01
2014-08-11 10:20:23到2014-08-11 13:30:56

我必须从mysql表中获得这些结果。

请帮助..

1 个答案:

答案 0 :(得分:0)

您可以通过为每行空闲时段分配分组变量来完成此操作。最简单的就是任何给定记录(速度为0)之前的非零速度数。然后进行聚合:

select min(cdate), max(cdate)
from (select t.*,
             (select count(*)
              from table t2
              where t2.cdate <= t.cdate and t2.speed > 0
             ) as grp
      from table t
      where t.speed = 0
     ) x
group by grp;