留存

使用 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...