如何为每组行选择具有最小和最大时间戳的mysql数据

如何为每组行选择具有最小和最大时间戳的mysql数据,mysql,sql,select,gps,timestamp,Mysql,Sql,Select,Gps,Timestamp,我有一个mysql表,其中包含来自汽车gps跟踪器lat、lng、速度和时间的数据。我想选择位置纬度,经度和时间,其中汽车已停止速度=0超过10分钟,30分钟,1小时等 我的桌子看起来像这样: id latitude longitude speed time ----------------------------------------------------------------------- 304 52.388983333333336

我有一个mysql表,其中包含来自汽车gps跟踪器lat、lng、速度和时间的数据。我想选择位置纬度,经度和时间,其中汽车已停止速度=0超过10分钟,30分钟,1小时等

我的桌子看起来像这样:

id latitude longitude speed time ----------------------------------------------------------------------- 304 52.388983333333336 17.025338333333334 33.67 2014-03-26 08:00:04 305 52.39029 17.023776666666667 34.65 2014-03-26 08:00:14 306 52.391035 17.021631666666668 32.91 2014-03-26 08:00:24 307 52.39103166666666 17.01917 30.03 2014-03-26 08:00:34 308 52.39089833333333 17.01698 29.33 2014-03-26 08:00:44 309 52.390593333333335 17.01532 9.54 2014-03-26 08:00:54 310 52.39071333333333 17.015056666666666 0 2014-03-26 08:01:04 311 52.39105333333333 17.01499 10.3 2014-03-26 08:01:14 312 52.391485 17.01488 7.82 2014-03-26 08:01:24 313 52.391705 17.014815 0 2014-03-26 08:01:34 314 52.391705 17.014815 0 2014-03-26 08:01:44 315 52.391705 17.014815 0 2014-03-26 08:01:54 316 52.391705 17.014815 0 2014-03-26 08:02:04 317 52.391705 17.014815 0 2014-03-26 08:02:14 318 52.391705 17.014815 0 2014-03-26 08:02:24 319 52.39232333333333 17.014648333333334 7.12 2014-03-26 08:02:34 320 52.392345 17.014635 0 2014-03-26 08:02:44 321 52.392345 17.014635 0 2014-03-26 08:02:54 322 52.392345 17.014635 0 2014-03-26 08:03:04 323 52.392345 17.014635 0 2014-03-26 08:03:15 324 52.392345 17.014635 0 2014-03-26 08:03:25 325 52.392345 17.014635 0 2014-03-26 08:03:35 326 52.392558333333334 17.014471666666665 14.11 2014-03-26 08:03:45 327 52.392316666666666 17.012883333333335 27.47 2014-03-26 08:03:55 328 52.39194333333333 17.010871666666667 28.93 2014-03-26 08:04:05 329 52.39152333333333 17.00893 22.28 2014-03-26 08:04:15 330 52.391575 17.007181666666668 27.01 2014-03-26 08:04:25 331 52.39164 17.00501 26.48 2014-03-26 08:04:35 332 52.39159333333333 17.002895 28.34 2014-03-26 08:04:45 333 52.391641666666665 17.000795 26.39 2014-03-26 08:04:55 334 52.392156666666665 16.999178333333333 16.56 2014-03-26 08:05:05 335 52.39223666666667 16.998796666666667 0 2014-03-26 08:05:15 336 52.39234 16.99819 15.38 2014-03-26 08:05:25 337 52.39261166666667 16.996865 17.1 2014-03-26 08:05:35 338 52.392896666666665 16.995643333333334 20.91 2014-03-26 08:05:45 339 52.39313666666666 16.99468 7.5 2014-03-26 08:05:55 340 52.39331833333333 16.993918333333333 9.1 2014-03-26 08:06:05 341 52.3936 16.992806666666667 16.86 2014-03-26 08:06:15 342 52.393746666666665 16.992065 4.72 2014-03-26 08:06:25
寻求帮助,有什么想法吗

您需要为每个0记录添加一个标识符,以便将它们分组在一起。一个简单的度量是数据中它之前的非零记录数

select latitude, longitude, min(time) as StartTime, max(time) as EndTime
from (select t.*,
             (select count(*)
              from tracker t2
              where t2.time <= t.time and
                    t2.speed > 0
             ) as grp
      from tracker t
     ) t
group by grp, latitude, longitude;

例如。

我正在考虑选择所有记录,并将其写入php For循环,检查速度是否为0,以节省此行的时间,并等待速度大于0的另一行。之后,计算第一次和最后一次之间的差值。我现在没有其他想法,但我认为这不是一个好的解决方案。我打赌有更好的解决方案,所以我在这里寻求帮助。你的想法看起来很有希望,但是你的选择在这里有一个语法:我在mysql选择中没有那么好,我找不到为什么它不起作用:我更改了表名:其他地方有问题:1064-你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在位置t2(其中t2.time)附近使用的正确语法
having max(time) >= min(time) + interval 1 hour