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