用户连续登陆
一、规定时间内用户最大连续登陆天数
为了看有哪些忠实用户,积极使用产品,需要计算用户的连续登陆天数。
二、user_login表字段(所有用户登陆信息)
user_id | login_time |
---|---|
valk | ‘2021-08-08 18:30:20’ |
zaa | ‘2021-08-07 18:30:20’ |
zb | ‘2019-09-07 18:30:20’ |
三、分解步骤
1.where初步筛选
首先使用timestampdiff(unit, begin, end) <= 30进行where的条件筛选,得到新表t_1
-- t_1表
select user_id, log_time
from user_login
where timestampdiff(day, login_time, now()) <= 30;
这样符合条件数据就出来了
user_id | login_time |
---|---|
valk | ‘2021-08-08 18:30:20’ |
zaa | ‘2021-08-07 18:30:20’ |
2.窗口函数分组排序
使用row_number() over(partition by order by )进行排序。
得到一个按user_id分组并有排序编号的新表t_2
-- t_2表
select user_id, date(login_time) as login_date
row_number() over(partition by user_id, order by login_time ascending)