从下表中,我需要获取按月份和年龄段划分的唯一客户覆盖范围的总和:
客户 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