select user_id
from (
select user_id,
count(first_time) con_day,
reg_port
from(
select user_id,
reg_port,
date_sub(date(log_time),interval rn day) first_time
from(
select user_id,
log_time,
reg_port,
row_number() over(partition by user_id order by log_time) as rn
from login_tb join register_tb using(user_id)
) as t1
) as t2
group by user_id,first_time
)as t3
where con_day>=3 and reg_port<>'m'
order by user_id
计算连续登录天数时一般需要三个表嵌套:
最内层t1:得到日期顺次排序
第二层t2:得到每一日期的first_time
最外层t3:得到相同first_time的计数,作为连续的天数

京公网安备 11010502036488号