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

SQL中如何动态查询消费覆盖场所数最多的合作方名单

问题分析

现有代码的逻辑缺失和错误点

  • 字段名引用错误:数据表的场所字段为PlaceName,你在子查询中错误写为Place,执行时会直接抛出字段不存在的报错。
  • 缺少最大值筛选逻辑:现有代码仅统计了每个合作方的有消费记录场所数量、按数量倒序排序,会返回所有有消费记录的合作方,没有筛选出仅达到最大数量的合作方,不符合需求要求。

修正逻辑说明

你需要先统计所有合作方对应的有消费场所数量,再提取出数量等于最大值的合作方即可,参考实现代码如下:

-- 方案1:使用RANK窗口函数实现,兼容大部分主流SQL引擎
SELECT Partner, num_of_sites
FROM (
    SELECT 
        Partner,
        COUNT(DISTINCT PlaceName) AS num_of_sites,
        -- 按场所数量倒序排名,相同数量排名一致
        RANK() OVER(ORDER BY COUNT(DISTINCT PlaceName) DESC) AS rank_num
    FROM TableA
    WHERE Money > 0
    GROUP BY Partner
) t
WHERE rank_num = 1
-- 方案2:使用子查询匹配最大值,兼容性更高
SELECT Partner, COUNT(DISTINCT PlaceName) AS num_of_sites
FROM TableA
WHERE Money > 0
GROUP BY Partner
HAVING COUNT(DISTINCT PlaceName) = (
    SELECT MAX(site_count)
    FROM (
        SELECT COUNT(DISTINCT PlaceName) AS site_count
        FROM TableA
        WHERE Money > 0
        GROUP BY Partner
    ) t
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:06:03