SQL-查找两个城市之间的距离,必须格式化表格
我是SQL的初学者,有一个问题涉及在配置单元中运行查询,我认为这与SQL代码非常相似/相同。我的数据表如下所示:SQL-查找两个城市之间的距离,必须格式化表格,sql,hive,Sql,Hive,我是SQL的初学者,有一个问题涉及在配置单元中运行查询,我认为这与SQL代码非常相似/相同。我的数据表如下所示: name lat long NY 40.3 70.3 SF 36.1 60.2 LA 36.5 53.1 CH 45.2 62.3 ... 我需要找到彼此之间有一定距离的所有城市,距离用纬度和经度来衡量 我目前对如何解决这一问题的看法如下: name lat long NY
name lat long
NY 40.3 70.3
SF 36.1 60.2
LA 36.5 53.1
CH 45.2 62.3
...
我需要找到彼此之间有一定距离的所有城市,距离用纬度和经度来衡量
我目前对如何解决这一问题的看法如下:
name lat long
NY 40.3 70.3
SF 36.1 60.2
LA 36.5 53.1
CH 45.2 62.3
...
谢谢 您可以通过
自连接来完成此任务
select
d1.name as city1, d2.name as city2,
d1.lat as lat1, d2.lat as lat2,
d1.long as long1, d2.long as long2
from datatable d1
join datatable d2 on d1.name < d2.name
选择
d1.名称为城市1,d2.名称为城市2,
d1.lat为lat1,d2.lat为lat2,
d1.长得一样长,d2.长得一样长
从数据表d1
在d1.name
编辑:由于配置单元不支持2.2.0以下版本中的不平等联接,因此可以使用
select
d1.name as city1, d2.name as city2,
d1.lat as lat1, d2.lat as lat2,
d1.long as long1, d2.long as long2
from datatable d1
join datatable d2 on 1=1
where d1.name < d2.name
选择
d1.名称为城市1,d2.名称为城市2,
d1.lat为lat1,d2.lat为lat2,
d1.长得一样长,d2.长得一样长
从数据表d1
在1=1时联接数据表d2
其中d1.name
您可以通过自连接来完成此任务
select
d1.name as city1, d2.name as city2,
d1.lat as lat1, d2.lat as lat2,
d1.long as long1, d2.long as long2
from datatable d1
join datatable d2 on d1.name < d2.name
选择
d1.名称为城市1,d2.名称为城市2,
d1.lat为lat1,d2.lat为lat2,
d1.长得一样长,d2.长得一样长
从数据表d1
在d1.name
编辑:由于配置单元不支持2.2.0以下版本中的不平等联接,因此可以使用
select
d1.name as city1, d2.name as city2,
d1.lat as lat1, d2.lat as lat2,
d1.long as long1, d2.long as long2
from datatable d1
join datatable d2 on 1=1
where d1.name < d2.name
选择
d1.名称为城市1,d2.名称为城市2,
d1.lat为lat1,d2.lat为lat2,
d1.长得一样长,d2.长得一样长
从数据表d1
在1=1时联接数据表d2
其中d1.name
您的变量让我有点困惑。d1.city和d2.city不应该是d1.name和d2.name吗?d1和d2在我的数据库中是同一个表,但我们不知何故为它们指定了不同的名称?很抱歉输入错误..我现在编辑了它..是的,它们是同一个表,但我们为它们指定了不同的列别名。datatable是关键字,还是我的表名?-是的,这是个愚蠢的问题。我不知道我们可以在d1和d2中使用两个版本的表,thanksit是您的表的名称。Hive中只支持相等联接、外部联接和左半联接。配置单元不支持非相等条件的联接条件,因为很难将此类条件表示为映射/减少作业。您的变量有点让我困惑。d1.city和d2.city不应该是d1.name和d2.name吗?d1和d2在我的数据库中是同一个表,但我们不知何故为它们指定了不同的名称?很抱歉输入错误..我现在编辑了它..是的,它们是同一个表,但我们为它们指定了不同的列别名。datatable是关键字,还是我的表名?-是的,这是个愚蠢的问题。我不知道我们可以在d1和d2中使用两个版本的表,thanksit是您的表的名称。Hive中只支持相等联接、外部联接和左半联接。配置单元不支持非相等条件的联接条件,因为很难将此类条件表示为映射/减少作业。