题目

法一思路

参考上一道题,先找到每个用户第一次登陆的时间与id,然后按天算满足条件的个数,命名为表a 需要输出没有新用户的天数,所以需要进行外层查询的表连接,distinct date,将个数为null的补为0,用ifnull函数

select distinct l.date,ifnull(a.cnt,0)
from login l left join (select date,count(user_id) cnt
                        from login
                        where (user_id,date) in (select user_id,min(date)
                                                from login
                                                group by user_id)
                      group by date
                      ) a using(date)

法二:窗口函数

select date,sum((case rk when 1 then 1
       else 0 end))
from (select date,row_number() over(partition by user_id order by date) rk
    from login) a
group by date