
SELECT
a.date,
ROUND(COUNT(b.user_id) * 1.0/COUNT(a.user_id), 3) AS p
FROM (
SELECT
user_id,
MIN(date) AS date
FROM login
GROUP BY user_id) a
LEFT JOIN login b
ON a.user_id = b.user_id
AND b.date = DATE_ADD(a.date,INTERVAL 1 DAY)
GROUP BY a.date
UNION
SELECT
date,
0.000 AS p
FROM login
WHERE date NOT IN ( -- 这是没有当日新用户(那么这天的次日转存率一定为0)
SELECT
MIN(date)
FROM login
GROUP BY user_id)
ORDER BY date;
SQL查询:计算次日留存率
该SQL查询用于计算每日登录用户的次日留存率。它首先找出每天的首次登录用户,然后通过LEFT JOIN找到这些用户次日是否再次登录。结果与没有当日新用户的日期合并,并按日期排序。次日留存率计算公式为:次日登录用户数 / 当日新用户数。
825

被折叠的 条评论
为什么被折叠?



