使用sql计算保留/流失

frebpwbc  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(409)

我创建了一个派生表,它应该非常接近于计算客户流失率,但似乎无法得到最终答案

account_id     current_month_paid     last_month_paid    next_month_paid
 633               2018-10                NULL                NULL
 862               2018-10                NULL              2018-11
 862               2018-11               2018-10            2018-12
 862               2018-12               2018-11            2019-01
1448               2018-10                NULL              2018-11

如何对这些列进行分组,以便每月获得%的保留率,例如:

2018-10       2018-11       2018-12
  92%          94%            93%

任何帮助都将不胜感激。我在用aws雅典娜以防万一
编辑:这些是样本百分比,它们不是实际的计算。我期待着组每月和显示什么%的前一个月支付(每个帐户id)

wooyq4lh

wooyq4lh1#

我不太清楚派生表的语义,但假设
对于给定月份的新用户,last\u month\u paid=null,并且
next\u month\u paid=null意味着用户在给定的月份有了最后一次付款,我会选择如下方式:

WITH paying_user_stats AS (
    SELECT
        account_id,
        current_month_paid,
        1 as paying_users,
        case when last_month_paid is null then 1 else 0 end as paying_users_new,
        case when next_month_paid is null then 1 else 0 end as paying_users_churn
    FROM accounts
)
SELECT
    current_month_paid,
    sum(paying_users) as paying_users,
    sum(paying_users-paying_users_new) as paying_users_month_begin,
    sum(paying_users-paying_users_churn) as paying_users_month_end,
    sum(paying_users_new) as paying_users_new,
    sum(paying_users_churn) as paying_users_churn
FROM paying_user_stats
GROUP BY current_month_paid

现在,如果我理解了你对保留率的定义,你在寻找 sum(paying_users)/sum(paying_users_month_begin) . 您可能希望在bi工具、电子表格等中的查询之外进行这种划分,以避免意外地将其聚合到未加权平均值等问题。

相关问题