此题问:新登录用户次日成功的留存率
     
 
                              会用到 count() 与 round()  
 select round(count(l1.date)/count(*),3) p
from login l1
    right join( select user_id,min(date) firstday
            from login group by user_id ) l2
    on l1.user_id = l2.user_id
        and l1.date = DATE_ADD(l2.firstday,INTERVAL 1 day);      - l2 是首次登录的全部用户id与登陆日期
- l1 通过user_id右连接l2,且用date_add(次日的日期)限定日期
- 那么l1.date就是次日还有登录的用户的日期
- count(*) 就是 count(l2.firstday)

 京公网安备 11010502036488号
京公网安备 11010502036488号