我有车的位置表(来自gps跟踪器),我想选择开始和结束驱动器的位置。所以我应该选择速度> 0的第一行和速度> 0且具有特定日期(日)的最后一行。我怎么能这样做?
例如,我有值的表:
+------+-------+---------------------+
| id | speed | date |
+------+-------+---------------------+
| 1 | 0 | 2015-02-03 10:00:00 |
| 2 | 10 | 2015-02-03 10:00:10 |
| 3 | 50 | 2015-02-03 10:00:20 |
| 4 | 100 | 2015-02-03 10:00:30 |
| 5 | 50 | 2015-02-03 10:01:00 |
| 6 | 0 | 2015-02-03 10:01:10 |
| 7 | 10 | 2015-02-03 12:00:10 |
| 8 | 50 | 2015-02-03 12:00:20 |
| 9 | 100 | 2015-02-03 12:00:30 |
| 10 | 50 | 2015-02-03 12:01:00 |
| 11 | 0 | 2015-02-03 12:01:10 |
+------+-------+---------------------+
我需要选择带有ID的记录:2,5,7,11
修改
这是列的完整列表:id(身份),car_id,海拔高度,纬度,经度,速度,日期
我需要计算每个赛道距离。 (一辆车可能在1天内开车多次 - 它可以从早上6点开到上午10点,然后从上午10点到下午1点停车,然后从下午1点到下午5点再次开车。)所以首先我需要&#34 ;检测"开始和停止驾驶(汽车在停车时也将数据发送到数据库(速度= 0)),然后使用类似distance calculations in mysql queries
之类的东西计算距离这是来自http://www.traccar.org/项目的数据库。
答案 0 :(得分:0)
如果您的ID随时间增长,那么您可以使用两个子查询(无需使用HAVING
):
SELECT * FROM mytable
WHERE id IN (
SELECT MIN(id) FROM mytable
WHERE speed > 0
GROUP BY DAY(date)
)
OR id IN (
SELECT MAX(id) FROM mytable
WHERE speed > 0
GROUP BY DAY(date)
)
第一个子查询每天选择MIN(id),第二个选择每天MAX(id)。在两种情况下,只有速度> 1的行。返回0。这应该为您提供每天的第一个ID,速度> 0和最后一个。
如果您不想依赖按日期排序的ID,则必须使用HAVING date = MIN(date)
代替MIN(id)
(同样适用于MAX(id)
)。
当然,date
是一个保留关键字,所以你可能不得不逃避它。
答案 1 :(得分:0)
添加像car_id
这样将每条记录与汽车相关联的列更容易了:
+------+--------+-------+---------------------+
| id | car_id | speed | date |
+------+--------+-------+---------------------+
| 1 | 1 | 0 | 2015-02-03 10:00:00 |
| 2 | 1 | 10 | 2015-02-03 10:00:10 |
| 3 | 1 | 50 | 2015-02-03 10:00:20 |
| 4 | 1 | 100 | 2015-02-03 10:00:30 |
| 5 | 1 | 50 | 2015-02-03 10:01:00 |
| 6 | 2 | 0 | 2015-02-03 10:01:10 |
| 7 | 2 | 10 | 2015-02-03 12:00:10 |
| 8 | 2 | 50 | 2015-02-03 12:00:20 |
| 9 | 2 | 100 | 2015-02-03 12:00:30 |
| 10 | 2 | 50 | 2015-02-03 12:01:00 |
| 11 | 3 | 0 | 2015-02-03 12:01:10 |
+------+--------+-------+---------------------+
然后,您可以使用以下查询获取所需的行:
SELECT MAX(id) id, car_id, MAX(`date`) `date` FROM <table>
WHERE speed > 0
GROUP BY car_id
ORDER BY speed ASC;
+------+--------+---------------------+
| id | car_id | date |
+------+--------+---------------------+
| 5 | 1 | 2015-02-03 10:01:00 |
| 10 | 2 | 2015-02-03 12:01:00 |
+------+--------+---------------------+