我有一个用户数据库(由visitorId 表示),这些用户属于特定渠道并表现出某些行为,记录在 eCommerceActionType 字段下。
通道 | visitorId | eCommerceActionType |
---|---|---|
社交 | 1 | page_view |
社交 | 1 | added_to_cart |
推荐 | 2 | added_to_cart |
推荐 | 2 | 购买 |
社交 | 3 | page_view |
社交 | 3 | added_to_cart |
社交 | 3 | 购买 |
直接 | 4 | page_view |
直接 | 4 | added_to_cart |
我想输出一个表格,记录按频道“添加到购物车”和“购买”的用户。所以结果应该是这样的:
通道 | cart_and_purchase |
---|---|
社交 | 1 |
推荐 | 1 |
直接 | 0 |
生成此表的最有效查询是什么?
感谢我能得到的任何帮助。
答案 0 :(得分:0)
您可以使用两个级别的聚合:
select channel,
sum(case when num_added_to_cart > 0 and num_purchased > 0 then 1 else 0 end) as cart_and_purchase
from (select channel, visitorid,
sum(case when eCommerceActionType = 'added_to_cart' then 1 else 0 end) as num_added_to_cart,
sum(case when eCommerceActionType = 'purchased' then 1 else 0 end) as num_purchased
from t
group by channel, visitorid
) t
group by channel;