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

BigQuery如何用CASE WHEN判断同字段中'Resurrected'晚于'Churned'状态

BigQuery 按分组判断复活时间晚于流失时间的SQL实现

实现逻辑

无需使用LEAD窗口函数逐行比对,直接通过分组聚合做极值比对即可,效率更高逻辑更清晰:

  1. 按group_id分组
  2. 分别聚合得到分组内最大的流失(Churned)月份、最大的复活(Resurrected)月份
  3. 比对两个极值:只要最大复活月份大于最大流失月份,返回TRUE;其他情况(包括两种类型记录任意一种不存在)返回FALSE

参考SQL

SELECT
  group_id,
  -- 比对两个极值,无对应类型记录时补FALSE
  COALESCE(
    MAX(CASE WHEN movement_type = 'Resurrected' THEN month_key END) > MAX(CASE WHEN movement_type = 'Churned' THEN month_key END),
    FALSE
  ) AS condition
FROM
  -- 替换为你的实际表名
  `your_project.your_dataset.your_table`
GROUP BY
  group_id

逻辑说明

如果某个group_id下没有Churned记录、或者没有Resurrected记录,对应MAX聚合的结果为NULL,NULL做比较运算的结果也为NULL,通过COALESCE函数可以将这类场景的结果统一修正为FALSE,完全匹配需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:36:00