#sql #snowflake-cloud-data-platform #snowflake-schema
#sql #платформа облачных данных snowflake #snowflake-схема
Вопрос:
Я пытаюсь найти кратчайшее расстояние между местами и местоположением пользователя, и у меня есть две таблицы, а именно: Users_Location
и Places
Таблица пользователя:
|------------|------------|------------|
| user_id | latitude | longitude |
|------------|------------|------------|
| 1 | 21.89027 | -53.03772 |
| 2 | 23.87847 | -41.78172 |
| 3 | 39.62847 | -80.19892 |
| 4 | 77.87092 | -96.39242 |
| 5 | 17.74962 | -28.56972 |
|------------|------------|------------|
Таблица мест
|--------------|------------|------------|
| Places | latitude | longitude |
|--------------|------------|------------|
| New York | 72.92629 | -12.89272 |
| Chicago | 93.62789 | -83.10172 |
| Dallas | 68.92612 | -67.17242 |
| Cincinnati | 41.62729 | -37.19067 |
| Milwaukee | 86.90617 | -22.82997 |
| Philadelphia| 38.91682 | -93.90692 |
|--------------|------------|------------|
Я хочу найти сокращенное расстояние между широтой-долготой пользователя и всеми другими местами.
Итоговая таблица будет выглядеть следующим образом:
|------------|-----------------|
| user_id | nearest_place |
|------------|-----------------|
| 1 | New York |
| 2 | Milwaukee |
| 3 | Chicago |
| 4 | New York |
| 5 | Philadelphia |
|------------|-----------------|
Я использую Snowflake в качестве хранилища данных и попытался использовать функцию HAVERSINE для вычисления геопространственного расстояния. Но я не понимаю, как мне перебирать каждое место в Places
таблице, чтобы получить кратчайшее расстояние с помощью SQL
Ответ №1:
Это должно вывести ближайший город к пользователю:
SELECT u.user_id, p.Places as nearest_place,
haversine( u.latitude, u.longitude, p.latitude, p.longitude) as distance
FROM users u, places p
qualify row_number() over (partition by user_id order by distance) = 1;
Комментарии:
1. Можно ли использовать предложение Where в приведенном выше запросе?
2. Да, мы можем использовать предложение where перед предложением qualify и после предложения from