题解 | 查询连续登陆的用户
查询连续登陆的用户
https://www.nowcoder.com/practice/9944210610ec417e94140ac09512a3f5
我这个想法挺巧妙的:把用户登录天数排序,然后用天数-序数,这样就得到了一个数字。
最后用group by 查看每个人每个数字重复次数,就筛选出了连续登录天数
select user_id
from
(select user_id,ranking,count(1) as cnt
from
(select user_id,day(log_time)-
row_number()over(partition by user_id order by log_time) as ranking
from
( select a.user_id,log_time,log_port
from login_tb a ,register_tb b
where a.user_id=b.user_id
union all
select user_id,reg_time as log_time,reg_port as log_port
from register_tb
order by user_id,log_time) as t) as t2
group by user_id,ranking
having cnt>=3) as t3