다음과 같은 문제를 해결하기 위해 노력하고 있습니다. 매분마다 위치와 온라인 상태를 업데이트하는 추적 장치가 있습니다. 온라인 상태를 select 문에서 여러 개의 작은 하위 집합으로 그룹화하여이 데이터를 별도의 여행으로 분할하려고합니다.하위 그룹의 최소값 및 최대 값 선택 방법
최소 &을 선택할 수 있다는 것을 알고 있습니다. 테이블 전체에 대해이 최대 값과 합집합을 사용할 수 있지만 온라인 상태가 참인 각 그룹에 대해이를 수행하는 방법을 잘 모르겠습니다.
코드에서 원하는 결과를 얻을 수 있지만 전선 성능상의 이유로이 작업을 서버로 옮겨야합니다.
누구든지 올바른 방향으로 SQL 문을 분해 할 수 있습니까?
[positions]
+-------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+-----------------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| device_id | int unsigned | NO | | NULL | |
| lat | double | NO | | 0 | |
| lng | double | NO | | 0 | |
| date_time | datetime | NO | | NULL | |
| online | bit | NO | | 0 | |
+-------------------+-----------------------+------+-----+---------+----------------+
예 데이터
id device_id lat lng date_time online
14 1 0.1 0.1 2014-07-11 05:21:37 0
17 1 0.11 0.11 2014-07-11 05:22:37 1
18 1 0.12 0.12 2014-07-11 05:23:37 1
24 1 0.13 0.13 2014-07-11 05:24:37 1
25 1 0.14 0.14 2014-07-11 05:25:37 1
26 1 0.14 0.14 2014-07-11 05:26:37 0
45 1 0.14 0.14 2014-07-11 05:27:37 0
47 1 0.14 0.14 2014-07-11 05:28:37 1
56 1 0.13 0.13 2014-07-11 05:29:37 1
67 1 0.12 0.12 2014-07-11 05:30:37 1
68 1 0.11 0.11 2014-07-11 05:31:37 1
78 1 0.11 0.11 2014-07-11 05:32:37 0
원하는 결과를 사전에
StartDateTime StartLat StartLng FinishDateTime FinishLat FinishLng
2014-07-11 05:22:37 0.11 0.11 2014-07-11 05:25:37 0.14 0.14
2014-07-11 05:28:37 0.14 0.14 2014-07-11 05:31:37 0.11 0.11
감사합니다, 스티브
는 그 일반적인 경우, 장치 ID = 1의 ID 번호에 갭이있는 이유는 한번에 활성 한 기기 ID보다 더있을 수 가정 공정인가? –
맞습니다. 조나단 –