题解 | 最长连续登录天数

select 
    t2.user_id,
    max(consec_days) as max_consec_days
from
    (select
        user_id,
        count(*) as consec_days
    from (select 
            user_id,
            fdate,
            row_number()over(partition by user_id order by fdate) as "序号",
            date_sub(fdate,interval row_number()over(partition by user_id order by fdate) day) as "分组日期"
        from tb_dau
        where fdate between "2023-01-01" and "2023-01-31"
        group by user_id,fdate) as t 
    group by user_id,分组日期) as t2
group by t2.user_id

全部评论

相关推荐

#牛客AI配图神器#深拷贝(Deep Copy)和浅拷贝(Shallow Copy)都是在编程中处理对象或数据的复制操作。浅拷贝创建一个新对象或数据结构,其中包含原始对象的引用。换句话说,新对象与原始对象共享相同的内存地址,因此对其中一个对象进行更改会影响到另一个对象。浅拷贝仅复制对象的第一层结构,而不会递归复制嵌套的对象或数据。深拷贝创建一个全新的对象或数据结构,其中包含原始对象完全独立的副本。新对象与原始对象具有不同的内存地址,因此彼此之间的更改是相互独立的。深拷贝会递归复制所有嵌套的对象或数据,确保整个对象及其子对象都被复制。区别:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=4e254dc3fdff4e8689fd57ad2d828b18内存引用:浅拷贝复制的是对象的引用,深拷贝复制的是对象的值。对象的变化:对浅拷贝的修改会影响原始对象,因为它们共享相同的引用。而对深拷贝的修改不会影响原始对象。嵌套对象或数据的复制:浅拷贝仅复制第一层对象或数据,嵌套的对象或数据仍然是共享的。深拷贝通过递归复制嵌套的对象或数据,确保每个对象都有独立的副本。在实际编程中,选择使用深拷贝还是浅拷贝取决于具体的需求。如果需要对对象进行修改而不影响原始对象,或者处理嵌套的对象结构,那么深拷贝是更合适的选择。而对于简单的数据结构或者只需要引用原始对象的情况,浅拷贝可能更加高效和节省内存。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务