具有活动用户条件的保留群组

时间:2016-11-14 13:17:35

标签: sql postgresql amazon-redshift

这个问题是this的扩展。 用户希望对保留进行队列分析。 数据采用以下格式:

timestamp          action        user id
---------          ------        -------
2015-05-05 12:00   homepage      1
2015-05-05 12:01   product page  1
2015-05-05 12:02   homepage      2
2015-05-05 12:03   checkout      1

必要的输出如下:

signup_date  user_period  retained_users
-----------  -----------  --------------
2015-05-05   0            80
2015-05-05   1            60
2015-05-05   2            40
2015-05-05   3            20
2015-05-06   0            100
2015-05-06   1            80
2015-05-06   2            40
2015-05-06   3            20

答案是由同一个人想出来的,如下所示。

 WITH 
users AS (
  SELECT
    user_id,
    date_trunc('day', min(timestamp)) as activated_at
    from table
    group by 1
  )
,

events AS (
  SELECT user_id,
         action,
         timestamp AS occurred_at
    FROM table
)

SELECT DATE_TRUNC('day',u.activated_at) AS signup_date,


       TRUNC(EXTRACT('EPOCH' FROM e.occurred_at - u.activated_At)/(3600*24)) AS user_period,


       COUNT(DISTINCT e.user_id) AS retained_users
  FROM users u
  JOIN events e
    ON e.user_id = u.user_id
   AND e.occurred_at >= u.activated_at
 WHERE u.activated_at >= getdate() - INTERVAL '11 day'
 GROUP BY 1,2
 ORDER BY 1,2

在上述情况下,据我所知,如果用户只是执行任何单个事件,他/她将被视为有效。并将成为retain_users的一部分。

但是,在我的场景中......我希望决定谁是活跃用户..

因此,活跃用户可以是查看5个页面或查看至少3个产品页面或将一个产品添加到购物车或进行结帐等等的人。

我该如何做这样的事情......

我想事件AS(..)部分将不得不改变..

真心感谢任何帮助。

由于

0 个答案:

没有答案