当前位置:   article > 正文

SQL-获取至少连续登录三天以上的用户_使用开窗函数找出30天分区内连续三天产生数据的用户

使用开窗函数找出30天分区内连续三天产生数据的用户

首先准备一下数据

  1. create table login_record (
  2. userid int ,
  3. time varchar2(20)
  4. );
  5. insert into login_record values (1,'2020-04-18');
  6. insert into login_record values (1,'2020-04-19');
  7. insert into login_record values (1,'2020-04-20');
  8. insert into login_record values(1,'2020-04-21');
  9. insert into login_record values(2,'2020-04-16');
  10. insert into login_record values(2,'2020-04-17');
  11. insert into login_record values(2,'2020-04-18');
  12. insert into login_record values(3,'2020-04-18');
  13. insert into login_record values(4,'2020-04-18');
  14. insert into login_record values(5,'2020-04-18');
  15. insert into login_record values(6,'2020-04-18');
  16. insert into login_record values(7,'2020-04-18');

数据样子

用户每天可能登录多次,现在的数据是进行过去重的,所以目前是用户每天只登陆一次的

现在我们可以使用lead() over()开窗函数 用于获取当前行的下一行 展示如下

代码如下

  1. select userid from (
  2. select userid,time,lead(time) over (partition by userid order by time) as time1
  3. from login_record
  4. )
  5. group by userid,to_date(time,'yyyy-mm-dd')- to_date(time1,'yyyy-mm-dd')
  6. having count(*) >= 2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/806898
推荐阅读
相关标签
  

闽ICP备14008679号