联合查询

思路:当期登入用户与时间段后用户联合查询,找出都登入的用户,然后除以总用户数
1、建一个自增一天的用户表,date_add(date, interval 1 day),题解也有用自连接的;
2、对当天登入和几天后还有登入的用户去重计数;
3、总用户数,COUNT( DISTINCT lg.user_id)。
select 
 round( 
     (
    select -- 第二天登入的用户
    count( distinct lg.user_id)
    from login lo
    ,(
        select  -- 建立一个自增日期用户表,把今天有登入的放到昨天,可以调整自增日期从而算几天后的登录率
        user_id
        ,date_add(date, interval 1 day) date -- 自增一天
        from login) lg
    where lo.date = lg.date -- 联合查询,当天登入和几天后还有登入的用户
    and lo.user_id = lg.user_id)  /
      count( distinct user_id) ,3)    p -- 总用户,去重计数
 from `login` ;