Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按时间间隔分组行_Mysql_Sql_Gps - Fatal编程技术网

Mysql 按时间间隔分组行

Mysql 按时间间隔分组行,mysql,sql,gps,Mysql,Sql,Gps,我有一个数据库,里面有很多来自gps发送者的行。gps有1秒的延迟将下一行发送到数据库。所以我想做的是一个显示旅行的web界面,我不想显示太多的行,我想把这些行分组到旅行中。所以我想做的是一个查询,它可以通过检查距离下一行是否超过14分钟来声明一次旅行/旅行,如果是,则在一行之前对所有行进行一行,给它一个旅行编号,否则将其添加到“旅行”集合中。试试这个(示例在) 选择行程,最小(日期时间),最大(日期时间) 从( 选择@Trip:=IF(TIMESTAMPDIFF(分钟、@Date\u时间、Da

我有一个数据库,里面有很多来自gps发送者的行。gps有1秒的延迟将下一行发送到数据库。所以我想做的是一个显示旅行的web界面,我不想显示太多的行,我想把这些行分组到旅行中。所以我想做的是一个查询,它可以通过检查距离下一行是否超过14分钟来声明一次旅行/旅行,如果是,则在一行之前对所有行进行一行,给它一个旅行编号,否则将其添加到“旅行”集合中。

试试这个(示例在)

选择行程,最小(日期时间),最大(日期时间)
从(

选择@Trip:=IF(TIMESTAMPDIFF(分钟、@Date\u时间、Date\u时间)你能用样本数据加载sqlfiddle.com吗?比如十几行,代表3-4次行程?样本表只需要有logid和datetime字段。现在你可以在对话框中看到它@AgRizzo@AgRizzo,非常棒的解决方案。我在这里遇到了一个类似的问题,你的查询对我来说非常有效。但是,你能解释一下它是如何解决的吗可以吗?让它去吧。我已经单独运行了每个子查询,并且了解了它是如何工作的。不管怎样,也许你可以为将来得到你答案的人添加详细的解释。
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