我有一组由Id1和Id2排序的Gps点。对于每个组,我必须得到输出中显示的第一个和最后一个记录。
我尝试基于Id1和Id2对其进行分区,然后在asc和desc顺序中根据STime对其进行排序并获取它们的第一个和最后一个记录,但是我没有得到所需的结果。不知道我哪里出错了。
Id1 Id2 STime ETime Latitude Longitude
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258488 -80.13432
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261063 -80.13432
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261559 -80.13432
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261559 -80.13696
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261559 -80.13696
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261063 -80.13696
Id1 Id2 STime ETime Latitude Longitude
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1258755 -80.1347351
11 112 2016-11-23 12:15:41 2016-11-23 12:17:20 26.1261559 -80.13432
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.12608 -80.13691
11 113 2016-11-23 12:24:13 2016-11-23 12:48:16 26.1261063 -80.13696
当前查询:
SELECT
A.Id1 ,
A.Id2,
STime,
ETime,
Latitude,
Longitude
FROM
M.A AS A
JOIN
L.B AS B
ON
A.STime < B.DateTime
AND A.ETime >= B.DateTime
AND A.ID1 = B.Id1
WHERE
(A._PARTITIONTIME BETWEEN TIMESTAMP('2016-11-23')
AND TIMESTAMP('2016-11-23')
AND A.Id1 IN (550315976))
ORDER BY
B.Id1,
A.Id1,
B.DateTime