记录满足多个条件的用户

时间:2021-06-01 02:26:13

标签: sql

我有一个用户数据库(由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

生成此表的最有效查询是什么?

感谢我能得到的任何帮助。

1 个答案:

答案 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;