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

如何编写SQL查询筛选标记为Churn且无后续活动的客户

精准筛选永久流失(无后续活动记录)的Churn客户

需求梳理

需要筛选出同时满足以下两个条件的客户:

  • 账户曾被标记为 Activity_Flag='Churn'
  • 在标记Churn之后,业务表中没有任何后续活动记录(自动排除标记Churn后仍有活跃/非活跃记录的客户)

解决方案SQL示例

假设业务表名为 customer_activity,核心字段包括:customer_id(客户唯一ID)、activity_date(活动发生日期)、activity_flag(活动类型标记)。以下是实现查询的SQL代码:

WITH customer_last_churn AS (
    -- 提取每个客户最后一次被标记为Churn的日期
    SELECT 
        customer_id,
        MAX(activity_date) AS last_churn_date
    FROM customer_activity
    WHERE activity_flag = 'Churn'
    GROUP BY customer_id
)
SELECT 
    clc.customer_id,
    clc.last_churn_date
FROM customer_last_churn clc
-- 左关联原表,检查Churn日期后是否存在任何活动记录
LEFT JOIN customer_activity ca
    ON clc.customer_id = ca.customer_id
    AND ca.activity_date > clc.last_churn_date
-- 仅保留无后续活动的客户
WHERE ca.customer_id IS NULL;

逻辑说明

  1. 子查询customer_last_churn:聚合每个客户最后一次被标记为Churn的时间,确保以最新的流失标记为节点判断后续行为。
  2. 左关联+空值过滤:通过左关联原表,筛选出Churn日期之后没有任何活动记录的客户——若关联后ca.customer_id为NULL,说明该客户在流失标记后未产生任何业务数据。
  3. 自动排除非目标客户:
    • 标记Churn后有活跃记录的客户(如ID123):会关联到后续的活跃记录,因此被排除
    • 标记Churn后有非活跃记录的客户(如ID321):同样会关联到后续记录,因此被排除
    • 仅标记Churn后无任何后续记录的客户会被保留

场景适配调整

如果业务需要以首次Churn标记为判断节点,只需将子查询中的MAX(activity_date)替换为MIN(activity_date)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:55:21