SQL连续登录这个问题在实际工作中遇到的情况比较多,结合窗口函数的使用会使SQL代码简洁易懂,下面我把最近刷题过程中遇到的连续登录这一类问题做一个总结。
首先解决SQL连续登录这一类问题核心的思路如下图所示
假设用户是连续登陆的情况下,那么用登陆日期减去排名后的日期应该是一样的,连续登录的用户的日期是一个差值为1的等差数列。
下面的题用到的数据为,数据库为Mysql8.0以上的版本
insert into visitlog values('2020-01-02 09:30:05','pc',246731); insert into visitlog values('2020-01-03 09:30:05','pc',246731); insert into visitlog values('2020-02-01 09:30:05','pc',246731); insert into visitlog values('2020-02-02 09:30:05','pc',246731); insert into visitlog values('2020-04-01 09:30:05','pc',246731);insert into visitlog values('2019-12-01 09:30:05