【发布时间】:2020-02-12 05:03:09
【问题描述】:
我有一个表格,其中包含每个商店的 X、Y 坐标。我想找到彼此的最小距离。我的意思是最近的商店。
例如:(期望的输出)
Shop_ID Nearest_Shop_ID
Shop_1 Shop_5
Shop_2 Shop_8
Shop_3 Shop_4
Select SHOP_ID, Longtitude, Latitude From PARTNER_ADDRESSES
group by SHOP_ID, Longtitude, Latitude;
这是我的店铺坐标表;
SHOP_ID LONGTITUDE LATITUDE
38599 32.815282 39.882793
38613 25.965545 42.166315
38682 31.845157 37.419859
38686 34.027568 38.370871
我有一个公式可以计算两个位置之间的距离(使用纬度和经度)。这是公式;
(NVL(6387.7,0) * ACOS((sin(NVL(Latitude1,0) / 57.29577951) * SIN(NVL(Latitude2,0) / 57.29577951)) +
(COS(NVL(Latitude1,0) / 57.29577951) * COS(NVL(Latitude2,0) / 57.29577951) *
COS(NVL(Longtitude2,0) / 57.29577951 - NVL(Longtitude1,0)/ 57.29577951))))
Latitude1 : Shop 1's Latitude value
Longtitude1: Shop 1's Longtitude value
Latitude2 : Shop 2's Latitude value
Longtitude2: Shop 2's Longtitude value
是否可以编写这种sql来计算每个商店的距离并列出每个商店的最小距离值?
【问题讨论】:
-
你的桌子有多大?性能有多重要?
-
我的桌子上有 5000 家商店。性能对我们很重要。谢谢@GordonLinoff
标签: sql oracle latitude-longitude geo