按时间间隔对行进行分组

时间:2013-12-20 16:45:29

标签: mysql sql gps

我有一个包含来自gps发件人的很多行的数据库。 gps有1秒的延迟将下一行发送到数据库。所以我想要做的是一个显示旅行的网络界面,我不想显示很多行,我想将行分组到旅行。所以我想做的是一个查询谁可以通过检查它是否超过14分钟到下一行来声明旅行/旅行,如果它然后在给它一个旅行号之前做一行所有行,否则将它添加到“旅行”系列。

1 个答案:

答案 0 :(得分:2)

试试这个(示例位于http://sqlfiddle.com/#!2/a0c86/39

SELECT Trip, MIN(Date_Time), MAX(Date_Time)
FROM (
  SELECT  @Trip := IF(TIMESTAMPDIFF(MINUTE, @Date_Time, Date_Time) <= 20, @Trip, @Trip+1) AS TRIP
    , logid
    , @Date_Time := Date_time AS Date_Time
  FROM gpslog
  JOIN (SELECT @TRIP := 1, @Date_Time := null ) AS tmp
  ORDER BY Date_Time) AS triplist
GROUP BY Trip