我有一张表可以保存用户的经纬度。我想计算用户行进的平均距离。 我的表看起来像:
UserId Latitude Longitude
4 29.682127 -66.241321
4 56.682127 -88.241321
4 89.682127 -66.241321
5 55.683114 -44.241102
4 88.683114 -33.241102
4 23.682127 -33.241321
我有一个函数可以计算两个纬度和长值的距离。
由于 阿比纳夫
答案 0 :(得分:0)
您需要能够对表的行进行排序,方法是添加一列“Id”,每列递增一次:
Id UserId Latitude Longitude
1 4 29.682127 -66.241321
2 4 56.682127 -88.241321
3 4 89.682127 -66.241321
4 5 55.683114 -44.241102
5 4 88.683114 -33.241102
6 4 23.682127 -33.241321
然后,你可以这样做:
SELECT t1.UserId
, t1.Latitude AS "LatFrom", t1.Longitude AS "LongFrom"
, t2.Latitude AS "LatTo", t2.Longitude AS "LongTo"
FROM YourTable t1
LEFT OUTER JOIN YourTable t2 ON t2.UserId=t1.UserId AND t2.Id > t1.Id
LEFT OUTER JOIN YourTable t3 ON t3.UserId=t1.UserId AND t3.Id > t1.Id AND t3.Id<t2.Id
WHERE t2.Id IS NOT NULL
AND t3.Id IS NULL