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

如何筛选每个customer_id除首行外的重复客户数据?

获取客户表中重复客户的后续记录

假设你的customer表包含customer_id、month以及其他客户详情字段,要筛选出每个customer_id第二次及以后出现的行,可以用窗口函数快速实现:

核心思路

通过ROW_NUMBER()窗口函数为每个客户的记录按顺序编号,然后过滤掉编号为1的首条记录,剩下的就是目标数据。

完整SQL查询

SELECT *
FROM (
    SELECT 
        *,
        -- 按customer_id分组,按月份排序生成行号
        ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY month) AS row_num
    FROM customer
) AS ranked_cust
WHERE row_num > 1;

细节说明

  • PARTITION BY customer_id:将数据按客户ID拆分,每个客户的记录单独处理
  • ORDER BY month:指定分组内的排序规则,确保行号按时间先后分配(如果你的表用其他字段标记记录顺序,比如自增IDid,直接替换month即可)
  • 子查询生成的row_num字段标记了每个客户的记录顺序,外层查询筛选row_num > 1,就能得到每个客户第二次及以后的所有记录

如果需要保留重复次数的信息,也可以把ROW_NUMBER()换成COUNT()或者RANK(),但ROW_NUMBER()是最适合这个需求的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:55:14