select user_id,max(consec_days) as max_consec_days
 from 
    (select 
    b.user_id,
    b.first_date,
    count(b.first_date) as consec_days
    from 
        (select 
        a.user_id,
        date_sub(fdate,interval a.rn day) as first_date
        from
            (select 
            user_id, 
            fdate,
            row_number()over(partition by user_id order by fdate) as rn
            from tb_dau)a
        )b
    group by b.user_id,b.first_date)c
group by user_id

现有数据无法解题→需要去增加数据→找连续登录与非连续登录数据特征上的不同

连续登录天数间隔都是1,离初始天间隔是等差数列,1,2,3,4...,用登录时间减去用户按时间排序的序号天数,连续登录的一段时间会得到同一初始天,按初始天分组进行计数,找到其中最大的即可得到最大登录时间。