You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CROSS JOIN和STDistance查找最近沃尔玛门店

沃尔玛门店最近匹配解决方案

核心思路

基于你已完成的全量距离计算,通过窗口函数+分组排名的方式,快速筛选出每个源门店对应的最近目标门店。以下是具体实现代码:

完整SQL示例

-- 先计算所有源门店与目标门店的距离,并生成排名
WITH store_distances AS (
    SELECT
        s.store_name AS source_store,
        d.store_name AS dest_store,
        -- 替换成你已实现的距离计算语句,比如ST_Distance(s.geom, d.geom)
        ST_Distance(s.geom, d.geom) AS distance_meters,
        -- 按源门店分组,对距离从小到大排名
        RANK() OVER (PARTITION BY s.store_name ORDER BY ST_Distance(s.geom, d.geom) ASC) AS distance_rank
    FROM WSource s
    CROSS JOIN WDest d
)
-- 筛选每个源门店排名第一的最近门店
SELECT
    source_store,
    dest_store,
    distance_meters
FROM store_distances
WHERE distance_rank = 1;

关键部分说明

  • CTE store_distances:复用你已完成的全量距离计算逻辑,同时新增排名字段。
  • RANK() OVER (...):
    • PARTITION BY s.store_name:将数据按源门店分组,确保每个源门店单独计算排名。
    • ORDER BY ... ASC:按距离从小到大排序,最近的门店会获得第1名。
  • 筛选条件 distance_rank = 1:只保留每个源门店的最近门店记录。

特殊情况处理

如果存在多个目标门店与同一个源门店距离完全相同(并列最近),RANK()会返回多条并列第1的记录。若只想保留其中任意一条,将RANK()替换为ROW_NUMBER()即可。

内容的提问来源于stack exchange,提问作者fdkgfosfskjdlsjdlkfsf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:01:00