方法)借鉴大牛的方法,思路清晰、简洁高效,太厉害了

新登录用户的次日成功的留存率
解题公式:(第一天登录的新用户并且第二天也登录的用户)/(总用户)

  • 总用户数量
    select count(distinct user_id) from login
  • 每个用户第一天登陆的日子(即为新用户)
    select user_id,min(date) from login group by user_id
  • 后一天登录还登录的新用户
    SELECT user_id, DATE_ADD(MIN(date),INTERVAL 1 DAY) FROM login GROUP BY user_id
    MySQL解法:
    SELECT
    ROUND(COUNT(DISTINCT user_id)*1.0 / (SELECT COUNT(DISTINCT user_id) FROM login), 3)
    FROM login
    WHERE (user_id, date)
    IN
    (SELECT user_id, DATE_ADD(MIN(date),INTERVAL 1 DAY) FROM login GROUP BY user_id);