【问题标题】:Calculating Retention/ Churn Using SQL使用 SQL 计算留存率/流失率
【发布时间】:2020-07-02 22:45:12
【问题描述】:

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

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 Athena 以防万一

编辑:这些是样本百分比,它们不是实际计算。我希望按月分组并显示上个月支付的百分比(每个帐户 ID)

【问题讨论】:

  • 请解释您的计算逻辑。完全不清楚您是如何从 5 行数据中获得这些百分比的。
  • 这些是示例计算,对不起!

标签: sql amazon-athena


【解决方案1】:

派生表的语义对我来说不是很清楚,但假设是

  • last_month_paid = null 对于给定月份的新用户,并且
  • next_month_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 工具、电子表格等中的查询之外进行该划分,以避免意外将其汇总为未加权平均值等问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多