题解 | 最长连续登录天数

最长连续登录天数

https://www.nowcoder.com/practice/cb8bc687046e4d32ad38de62c48ad79b

# 在SQL中,使用WITH AS(即​​公用表表达式,CTE​​)连续定义多个临时表时,​​后续定义的临时表可以访问前面已定义的临时表​​
# 比如定义了Q1、Q2、Q3三个临时表,其中Q3引用了Q1和Q2的数据。这说明在同一个WITH子句中,后续的CTE可以使用前面定义的CTE的结果。不过需要注意的是,每个CTE只能引用之前定义的CTE,不能反向引用或者循环引用。
# SQL标准不允许在SELECT子句中对聚合函数(如COUNT)的结果再次使用聚合函数(如MAX)。


with a as (
    select user_id, fdate, row_number() over (
        partition by user_id
        order by fdate
    ) rn
    from tb_dau
    where fdate>='2023-01-01' and fdate<='2023-01-31'
), b as (
    select user_id, date_sub(fdate, interval rn day) first_date
    from a
), c as (
    select user_id,  count(*) consec_days
    from b
    group by user_id, first_date
    having consec_days>1
)

select user_id, max(consec_days) max_consec_days
from c
group by user_id;

全部评论

相关推荐

ResourceUtilization:四六级不愧是大学最有用的证之一
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务