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

SQL查询疑问:为何无法获取ad_id对应prof_name唯一值>4的所有记录?

原SQL的错误分析
  • 分组逻辑完全偏离需求:原SQL按ad_id和prof_name联合分组,COUNT(prof_name)统计的是同一ad_id下同一个prof_name重复出现的次数,而你需要的是统计每个ad_id下prof_name的唯一值数量,两者逻辑完全不同。
  • 返回结果不符合预期:原SQL只能输出分组后的ad_id和prof_name,无法返回所有原始数据,而且筛选条件也不是你要的“ad_id对应prof_name唯一值>4”。
正确写法示例

方式一:子查询筛选合格ad_id后关联原表

先找出所有满足条件的ad_id,再匹配原表返回全部对应记录:

SELECT p.*
FROM PROF p
JOIN (
    SELECT ad_id
    FROM PROF
    GROUP BY ad_id
    HAVING COUNT(DISTINCT prof_name) > 4
) valid_ad ON p.ad_id = valid_ad.ad_id

方式二:窗口函数直接计算并筛选

用窗口函数给每条记录标记其ad_id对应的prof_name唯一值数量,再过滤符合条件的记录:

SELECT *
FROM (
    SELECT *,
           COUNT(DISTINCT prof_name) OVER (PARTITION BY ad_id) AS unique_prof_count
    FROM PROF
) temp
WHERE unique_prof_count > 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:15:18