Я начинаю с 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
...
мне нужно найти все города в пределах определенного расстояния друг от друга, причем расстояние измеряется по latitutde и долготы.
Моя текущая идея о том, как решить эту проблему следующим образом:
- Если есть п = 10 городов (таким образом, п = 10 строк в таблице), создать новую таблицу с (10 * 9)/2 = 45 строк, где каждая строка теперь имеет 6 столбцов (city1, city2, lat1, lat2, long1, long2)
- С строками в этом формате я могу просто использовать вычисления типа pythagorean для вычисления расстояния.
Я не уверен, как сделать шаг 1 в SQL. По сути, он создает каждую возможную уникальную комбинацию пар из первого столбца и включает в себя соответствующие lat и long для каждого города в паре в этой строке.
Этот подход шикарный? и как я мог его реализовать? Есть ли способ лучше?
Спасибо!
спасибо даст это попробовать – Canovice
ваши переменные путают мне маленький кусочек. не должно d1.city и d2.city быть d1.name и d2.name? и d1 и d2 - одна и та же таблица в моей базе данных, но мы каким-то образом присваиваем им разные имена? – Canovice
Я сожалею о том, что опечатал..и отредактировал его сейчас. Да, они одна и та же таблица, но мы даем им разные столбцы-псевдонимы. –