留存

使用 SQL 分析业务数据

Michel Semaan

Data Scientist

MAU 的陷阱

  • 无法按在网时长细分活跃用户
  • 无法区分不同的活跃模式
    • 情形 1:每月有 100 位用户注册,只活跃 1 个月
    • 情形 2:仅首月有 100 位用户注册,之后无人注册,但这 100 位用户每月都活跃
    • 两种情形的 MAU 都是 100!
使用 SQL 分析业务数据

MAU 拆解

拆解

  • 新增用户:本月加入
  • 留存用户:上月活跃,本月仍活跃
  • 回流用户:上月不活跃,本月重新活跃
使用 SQL 分析业务数据

留存率 - 概述

  • 留存率:衡量上月活跃用户在本月仍然活跃的比例
  • 公式:$\frac{Uc}{Up}$,其中 $Uc$ 为在本月与上月均活跃的去重用户数,$Up$ 为上月活跃的去重用户数
  • 示例:$\frac{80}{100} = 0.8 = 80\%$
使用 SQL 分析业务数据

留存率 - 查询

WITH user_activity AS (
  SELECT DISTINCT
    DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
    user_id
  FROM orders)

SELECT previous.delivr_month, ROUND( COUNT(DISTINCT current.user_id) :: NUMERIC / GREATEST(COUNT(DISTINCT previous.user_id), 1), 2) AS retention
FROM user_activity AS previous LEFT JOIN user_activity AS current ON previous.user_id = current.user_id AND previous.delivr_month = (current.delivr_month - INTERVAL '1 month') GROUP BY previous.delivr_month ORDER BY previous.delivr_month ASC LIMIT 3;
使用 SQL 分析业务数据

留存率 - 结果

delivr_month  retention
------------  ---------
2018-06-01    0.70
2018-07-01    0.70
2018-08-01    0.76
使用 SQL 分析业务数据

留存

使用 SQL 分析业务数据

Preparing Video For Download...