字节跳动SQL面试题:如何用SQL计算次日、3日、7日留存率?
大家好!今天我们来聊聊一个让无数数据人又爱又恨的面试题——用户留存率计算。字节跳动的面试官尤其喜欢用这道题考察候选人的SQL功底,毕竟用户留存是衡量产品健康度的核心指标之一。但别慌,看完这篇攻略,你不仅能轻松应对面试,还能在朋友聚会时用“留存率”装个X!
一、留存率是什么?为什么重要?
留存率就像APP的“回头客指数”:
- 次日留存率 = 用户今天来了,明天还来吗?
- 3日留存率 = 用户今天来了,三天后还来吗?
- 7日留存率 = 用户今天来了,一周后还来吗?
计算公式很简单:
N 日留存率 = 第N天活跃用户数 首日新增用户数 × 100 % N日留存率 = \frac{\text{第N天活跃用户数}}{\text{首日新增用户数}} \times 100\% N日留存率=首日新增用户数第N天活跃用户数×100%
但用SQL实现时,魔鬼藏在细节里!
二、SQL实现:三步搞定留存率计算
步骤1:找到用户的“第一次心动”(首次登录日期)
SELECT
user_id,
login_date,
MIN(login_date) OVER (PARTITION BY user_id)