题解 | 最长连续登录天数

最长连续登录天数

https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b?tpId=375&tqId=10737573&ru=/exam/oj&qru=/ta/sql-big-write/question-ranking&sourceUrl=%2Fexam%2Foj

主要思路:

确定最长连续登陆天数的计算方法:对于用户1,如果日期连续,那么日期按顺序减去连续整数的结果应该相同,然后,只要分别对相同的做差结果进行计数,即可得到用户1在不同时间段中连续登陆的天数,最大的计数结果即为最长连续登陆天数。

注意:

1. 分层建立表格需要对每个子表格命名

2. fdate是字符串,做差需要调用date()将其变成能够相减的格式

3. 最内层根据题目要求筛选出基本表格,注意要对每条数据去重处理,确保用户在具体的某一天只有一条记录

4. 如果有多步计算,就一层层的嵌套表格,如果同时出现两个相关的计算式会出现计算冲突等问题。

select user_id,max(sup2) max_consec_days from(
    select user_id,count(sup1) sup2 from(
        select user_id,fdate, date(fdate)-rk sup1 from(
            select distinct user_id,fdate,row_number()over(partition by user_id order by fdate) rk from tb_dau t
            where fdate between '2023-01-01' and '2023-01-31') t1
            ) t2
    group by user_id,sup1
) t3
group by user_id

#sql刷题#

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务