【发布时间】:2017-02-06 07:22:35
【问题描述】:
我是 SQL 的初学者,并且有一个问题涉及在 Hive 中运行查询,我认为这与 SQL 代码非常相似/相同。我的数据表如下:
name lat long
NY 40.3 70.3
SF 36.1 60.2
LA 36.5 53.1
CH 45.2 62.3
...
我需要找到彼此之间一定距离内的所有城市,距离由纬度和经度测量。
我目前关于如何解决这个问题的想法如下:
- 如果有 n=10 个城市(因此表中有 n=10 行),则创建一个 (10*9)/2 = 45 行的新表,其中每行现在有 6 列(city1、city2、lat1 , lat2, long1, long2)
- 使用这种格式的行,我可以简单地使用类似毕达哥拉斯的计算来计算距离。
我不确定如何在 SQL 中执行第 1 步。本质上,它从第一列创建每个可能的唯一对组合,并包括该行对中每个城市的相应纬度和经度。
这种方法聪明吗?我该如何实施?有没有更好的办法?
谢谢!!
【问题讨论】: