在 SQL 中寻找最短的地理空间距离
Finding shortest geospatial distance in SQL
我试图找到地点和用户位置之间的最短距离,我有两个 table 即:Users_Location
和 Places
用户的Table:
|------------|------------|------------|
| 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 |
|------------|------------|------------|
地点Table
|--------------|------------|------------|
| 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 |
|--------------|------------|------------|
我想找到用户的经纬度到所有其他地方的最短距离。
最后的 table 看起来像:
|------------|-----------------|
| user_id | nearest_place |
|------------|-----------------|
| 1 | New York |
| 2 | Milwaukee |
| 3 | Chicago |
| 4 | New York |
| 5 | Philadelphia |
|------------|-----------------|
我将 Snowflake 用作数据仓库并尝试使用 HAVERSINE 函数来计算地理空间距离。但是我不知道如何使用 SQL
遍历 Places
table 中的每个位置来获得最短距离
这应该显示离用户最近的城市:
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;
我试图找到地点和用户位置之间的最短距离,我有两个 table 即:Users_Location
和 Places
用户的Table:
|------------|------------|------------|
| 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 |
|------------|------------|------------|
地点Table
|--------------|------------|------------|
| 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 |
|--------------|------------|------------|
我想找到用户的经纬度到所有其他地方的最短距离。
最后的 table 看起来像:
|------------|-----------------|
| user_id | nearest_place |
|------------|-----------------|
| 1 | New York |
| 2 | Milwaukee |
| 3 | Chicago |
| 4 | New York |
| 5 | Philadelphia |
|------------|-----------------|
我将 Snowflake 用作数据仓库并尝试使用 HAVERSINE 函数来计算地理空间距离。但是我不知道如何使用 SQL
遍历Places
table 中的每个位置来获得最短距离
这应该显示离用户最近的城市:
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;