获取每月唯一客户 ID 的总和,然后按月份和年龄分组

问题描述 投票:0回答:1

从下表中,我需要获取按月份和年龄段划分的唯一客户覆盖范围的总和:

客户 ID cmpgn_月 年龄范围 覆盖范围
1 202309 18-34 1
1 202309 18-34 1
1 202308 18-34 1
2 202309 35-45 1
2 202308 35-45 0
2 202308 35-45 1
3 202309 18-34 1
3 202308 18-34 1
3 202308 18-34 1

这就是我们想要的结果。正如您所看到的,即使客户“1”在“202309”月份出现了两次,它也只能算作一次覆盖:

cmpgn_月 年龄范围 覆盖范围
202309 18-34 2
202309 35-45 1
202308 18-34 2
202308 35-45 1

我们将非常感谢您的帮助。

我尝试了下面的查询但没有成功,它给了我重复的行,就好像它仍在考虑每行的每个 cust_id 一样。

SELECT cmpgn_mth, age_band, SUM(cross_sell) OVER (PARTITION BY cust_id) AS coverage FROM mytable GROUP BY cmpgn_mth, age_band, cross_sell, cust_id

sql google-bigquery format
1个回答
0
投票

使用以下方法

select cmpgn_mth, age_band, 
  count(distinct if(coverage = 1, cust_id, null)) as coverage
from your_table
group by cmpgn_mth, age_band    

如果应用于您问题中的样本数据 - 输出为

© www.soinside.com 2019 - 2024. All rights reserved.