#解题思路: # 1、两张表用inner连接获取匹配的全部信息 # 2、row_number()给登录时间分组排序得到列date_rank # 3、登录时间减去date_rank得到一个日期first_date # 4、假如登录时间是连续的,则连续登录的这几个first_date应相同,所以first_date出现的次数就为该用户最长连续登录时间,用where函数查询出现次数>=3的用户即为答案 select d.user_id from ( select c.user_id, count(date_add(c.log_time,interval c.date_rank day)) as first_date_number from ( select a.user_id, b.log_time, row_number() over(partition by b.user_id order by log_time) as date_rank from register_tb as a inner join login_tb as b on a.user_id=b.user_id ) as c group by c.user_id ) as d where d.first_date_number >=3;