SQL统计留存率的核心是对比初始行为用户与后续某天仍活跃的同一用户,需准确定义活跃行为和首日、统一时间粒度、去重构造基准用户群,并通过JOIN或窗口函数计算各日留存人数及比率。

SQL统计留存率的核心是对比“初始行为用户”和“后续某天仍活跃的同一用户”,关键在准确圈定基准人群、识别回访行为、按时间维度对齐计算。
明确留存定义与时间粒度
留存率 = (第N日仍活跃的首日用户数 ÷ 首日活跃用户总数)× 100%。常见有次日留存、7日留存、30日留存。必须先约定“活跃行为”是什么(如登录、下单、访问首页),以及“首日”如何定义(如首次注册日、首次下单日、某活动参与日)。
- 若以“注册日”为起点,需确保表中有 user_id 和 register_date
- 若以“首次登录日”为起点,需先用窗口函数算出每个用户的 first_login_date
- 时间粒度统一用日期(DATE(event_time)),避免时分秒干扰分组
构造首日用户集合
用子查询或CTE提取所有在基准日(如2025-12-01)发生目标行为的用户,作为分母基础。例如:
WITH cohort AS (
SELECT DISTINCT user_id
FROM event_log
WHERE DATE(event_time) = '2025-12-01'
AND event_type = 'login'
)
这一步必须去重,避免同一用户多次行为重复计入分母。
关联后续行为并计算留存
将首日用户集合与后续日期的行为表左连接(或内连接,视是否只统计有回访者),按天聚合回访人数。例如统计次日留存:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~