题解 | #牛客每个人最近的登录日期(四)#

牛客每个人最近的登录日期(四)

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
全部评论

相关推荐

2025-12-29 22:46
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务