SELECT
-- 计算留存的用户天数 / 总的用户活跃天数
COUNT(t2.device_id) / COUNT(t1.device_id) AS avg_ret
FROM
-- t1 代表所有用户活跃的记录 (去重)
(SELECT DISTINCT device_id, date FROM question_practice_detail) AS t1
LEFT JOIN
-- t2 也代表所有用户活跃的记录,用于匹配第二天是否回归
(SELECT DISTINCT device_id, date FROM question_practice_detail) AS t2
ON
t1.device_id = t2.device_id -- 匹配同一个用户
AND t2.date = DATE_ADD(t1.date, INTERVAL 1 DAY); -- 匹配 t1 的后一天

京公网安备 11010502036488号