评估拍卖申请书mysql连续登录5天以上⽤户,【SQL】查询连续登陆7天以上的
⽤户
查询7天连续登陆⽤户这个问题很经典,解决⽅法也有很多,这⾥我讲⼀下笔者的⽅法,希望对⼤家有帮助。
具体思路:
1、因为每天⽤户登录次数可能不⽌⼀次,所以需要先将⽤户每天的登录⽇期去重。
2、再⽤row_number() over(partition by _ order by _)函数将⽤户id分组,按照登陆时间进⾏排序。
3、计算登录⽇期减去第⼆步骤得到的结果值,⽤户连续登陆情况下,每次相减的结果都相同。
4、按照id和⽇期分组并求和,筛选⼤于等于7的即为连续7天登陆的⽤户。
表信息如下图
关口前移
第⼀步:⽤户登录⽇期去重
lect DISTINCT date(date) as ⽇期,id from orde;
凉风什么成语结果为:
第⼆步:⽤row_number() over()函数计数
lect *,row_number() over(PARTITION by id order by ⽇期) as cum from (lect DISTINCT date(date) as ⽇期,id from orde)a;
结果为:离骚高中课文
蓝色英文
李彦博
第三步:⽇期减去计数值得到结果
lect *,date(⽇期)-cum as 结果 from (lect *,row_number() over(PARTITION by id order by ⽇期) as cum from (lect DISTINCT date(date) as ⽇期,id from orde)a)b;
结果:
第四步:根据id和结果分组并计算总和,⼤于等于7的即为连续登陆7天的⽤户
lect id,count(*) from (lect *,date(⽇期)-cum as 结果 from (lect *,row_number() over(PARTITIO
精神能力
N by id order by ⽇期) as cum from (lect DISTINCT date(date) as ⽇期,id from orde)a)b)c GROUP BY id,结果 having count(*)>=7;
结果为:
检波器
⽤了多次嵌套查询,最终得到我们需要的结果。