题解 | #牛客每个人最近的登录日期(四)#
牛客每个人最近的登录日期(四)
http://www.nowcoder.com/practice/e524dc7450234395aa21c75303a42b0a
题目
法一思路
参考上一道题,先找到每个用户第一次登陆的时间与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
查看1道真题和解析