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

SQL查询表中某列连续出现至少4次的对应值的实现方法

错误原因分析

你编写的SQL逻辑错误点在于:grpcnt-grpcnt1是连续同值序列的分组标识,本身不代表序列的连续出现长度,直接在WHERE层判断该值>=3会把不满足长度要求的分组也筛选进来,所以出现了多余的C结果。

正确查询SQL

SELECT DISTINCT Name
FROM (
    SELECT 
        Name,
        COUNT(*) AS continuous_cnt
    FROM (
        SELECT 
            Id,
            Name,
            -- 全局行号减去同Name内的行号,相同值代表属于同一个连续同Name序列
            ROW_NUMBER() OVER(ORDER BY Id) 
            - ROW_NUMBER() OVER(PARTITION BY Name ORDER BY Id) AS group_id
        FROM test
    ) t
    GROUP BY Name, group_id
    -- 筛选连续出现次数不少于4次的分组
    HAVING COUNT(*) >= 4
) res;

逻辑说明

  • 最内层子查询通过两个行号的差值生成group_id,将连续出现的相同Name归为同一分组
  • 中层按Name和group_id分组统计每组行数,得到每个连续序列的出现次数
  • 外层对符合次数要求的Name去重,得到最终结果
    运行上述SQL输出结果仅为B,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:15:11