【发布时间】:2017-03-13 22:38:53
【问题描述】:
两点之间的距离:
我有一组每辆车经过的 GPS 点。我正在尝试检索每次旅行的第一条和最后一条记录。
数据:
VehicleId TripId Latitude Longitude
121 131 33.645 -84.424
121 131 33.452 -84.409
121 131 33.635 -84.424
121 131 35.717 -85.121
121 131 35.111 -85.111
在上述数据集中,我需要将结果集作为每次行程的第一个和最后一个点。
VehicleId TripId StartLat StartLong EndLat EndLong
121 131 33.645 -84.424 35.111 -85.111
我尝试使用以下查询,但收到错误“不支持引用其他表的相关子查询,除非它们可以去相关, 例如通过将它们转换为有效的 JOIN”。任何帮助将不胜感激。
SELECT
a.VehicleId,
a.Tripid,
a.Latitude AS StartLat,
a.Longitude AS StartLong,
b.Latitude AS EndLat,
b.Longitude AS EndLong,
a.DateTime
FROMQ
`Vehicles` AS a
JOIN
`Vehicles` AS b
ON
a.VehicleId = b.VehicleId
AND a.Tripid = b.Tripid
WHERE
a.DateTime IN (
SELECT
MIN(DateTime)
FROM
`Vehicles`
WHERE
VehicleId = a.VehicleId
AND Tripid = a.Tripid)
AND b.DateTime IN (
SELECT
MAX(DateTime)
FROM
`Vehicles`
WHERE
VehicleId = a.VehicleId
AND Tripid = a.Tripid)
【问题讨论】:
标签: sql google-bigquery