比较sql表中的2行以获得平均距离

时间:2014-04-30 08:53:31

标签: sql

我有一张表可以保存用户的经纬度。我想计算用户行进的平均距离。 我的表看起来像:

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

我有一个函数可以计算两个纬度和长值的距离。

由于 阿比纳夫

1 个答案:

答案 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