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

BigQuery中按条件计算品类活动后累计唯一客户数

问题:在BigQuery StandardSQL中按产品统计活动结束后不同周期的累计唯一客户数

需求说明

按产品品类统计对应活动结束日期(end_campaign)后3个月、6个月、12个月内购买该产品的累计唯一客户(client)数。

输入表结构及数据

productorder_dateclientend_campaign
A2024-01-010012024-03-01
A2024-01-010022024-03-01
A2024-01-040032024-03-01
A2024-03-010012024-03-01
A2024-03-040032024-03-01
A2024-04-010032024-03-01
A2024-07-040072024-03-01
A2024-07-090082024-03-01
B2024-03-070012024-05-01
B2024-05-090062024-05-01
B2024-06-200082024-05-01
B2024-06-200092024-05-01
B2024-08-200092024-05-01
B2024-08-210102024-05-01

期望输出

productend_campaigncum_dist_count_3Mcum_dist_count_6M
A2024-03-0124
B2024-05-0134

用户尝试的SQL代码

WITH firstseen AS (   
  SELECT product, 
         client,
         case when order_date >= end_campagne then min(order_date) else null end as first_date   
  FROM sample_table   
  GROUP BY 1,2 
)

SELECT DISTINCT product, 
                COUNT(client) OVER (PARTITION by Product ORDER BY first_date) as daily_cumulative_count  
FROM firstseen 
ORDER BY 1

完善后的SQL代码

WITH post_campaign_first_purchase AS (
  SELECT 
    product,
    end_campaign,
    client,
    MIN(order_date) AS first_post_purchase_date -- 提取客户在活动结束后的首次购买日期
  FROM sample_table
  WHERE order_date >= end_campaign -- 仅保留活动结束及之后的订单
  GROUP BY product, end_campaign, client
)
SELECT
  product,
  end_campaign,
  -- 统计活动结束后3个月内的唯一客户数
  COUNT(DISTINCT CASE WHEN DATE_DIFF(first_post_purchase_date, end_campaign, MONTH) <= 3 THEN client END) AS cum_dist_count_3M,
  -- 统计活动结束后6个月内的唯一客户数
  COUNT(DISTINCT CASE WHEN DATE_DIFF(first_post_purchase_date, end_campaign, MONTH) <= 6 THEN client END) AS cum_dist_count_6M,
  -- 统计活动结束后12个月内的唯一客户数
  COUNT(DISTINCT CASE WHEN DATE_DIFF(first_post_purchase_date, end_campaign, MONTH) <= 12 THEN client END) AS cum_dist_count_12M
FROM post_campaign_first_purchase
GROUP BY product, end_campaign
ORDER BY product;

代码说明

  1. CTE部分:post_campaign_first_purchase筛选出活动结束后的所有订单,对每个product-end_campaign-client组合取首次购买日期,确保同一客户仅被统计一次。
  2. 主查询部分:通过CASE WHEN结合COUNT(DISTINCT),分别判断客户首次购买日期是否在活动结束后的3/6/12个月内,统计对应周期的唯一客户数量。使用DATE_DIFF函数计算日期差,精准判断时间范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:14:57