我是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。基本上,它从第一列开始创建每一个可能唯一的成对组合,并包括该行成对中每个城市对应的lat和long。
这种方法明智吗?我该如何实现呢?有更好的办法吗?
谢谢!!
1条答案
按热度按时间vlf7wbxs1#
你可以用一个简单的方法来完成这个任务
self-join
.编辑:由于配置单元在2.2.0以下的版本中不支持不等联接,因此可以使用