SQL刷题-连续3天登陆的用户

连续3天登陆的用户

表a: user_id 用户id、login_date 登陆日期

思路:先取得每个用户登陆日期及后两次登陆日期
若两次登陆日期间隔都为1则为连续登录

with t1 as(select user_id,login_date,lead(login_date,1) over(partition by user_id order by login_date) as lead_1day,lead(login_date,2) over(partition by user_id order by login_date) as lead_2day
from a);
select user_id
from t1
where (lead_1day-login_date)=1 and (lead_2day-lead_1day)=1;

综合:

select t.user_id
from (select user_id,login_date,lead(login_date,1) over(partition by user_id order by login_date) as lead_1day,lead(login_date,2) over(partition by user_id order by login_date) as lead_2day
from a) as t
where (lead_1day-login_date)=1 and (lead_2day-lead_1day)=1;

涉及函数:
lead()、窗口函数
参考:MySQL中LAG()函数和LEAD()函数的使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值