上一节内容,通过用户留存率的案例,讲解了解决近X天问题的思路,接下来,在本节内容来看看关于连续X天的问题,该类问题是面试和实际业务中经常需要解决的问题。
首先对连续指标、做个定义,如下:
- 1日连续:当日登录后,第二天也登录了,比如2021.2.10登录过,2021.2.11登录的算作1日连续 。
- 3日连续:当日登录后,第二和三天也登录了,比如2021.2.10登录过,2021.2.11和2021.2.12登录的算作3日连续 。
- 以此类推···
现假设,有一张用户登录表t_user_login,字段user_id和login_time分别表示用户id和登陆时间。接下来,我们通过SQL来求连续3日、7日登陆的用户。
一般,解决此类连续X天问题的思路如下:
- 第一步,可以使用窗口函数对user_id分组排序rn;
- 第二步,用登陆时间减去排序后的序号rn;
- 第三步,如果日期连续的话,则得到的这个日期会相同。
下面,我们通过一个案例来进行说明。
首先,我们先建t_user_login表。