赞
踩
首先准备一下数据
- create table login_record (
- userid int ,
- time varchar2(20)
- );
-
- insert into login_record values (1,'2020-04-18');
- insert into login_record values (1,'2020-04-19');
- insert into login_record values (1,'2020-04-20');
- insert into login_record values(1,'2020-04-21');
- insert into login_record values(2,'2020-04-16');
- insert into login_record values(2,'2020-04-17');
- insert into login_record values(2,'2020-04-18');
- insert into login_record values(3,'2020-04-18');
- insert into login_record values(4,'2020-04-18');
- insert into login_record values(5,'2020-04-18');
- insert into login_record values(6,'2020-04-18');
- insert into login_record values(7,'2020-04-18');
数据样子
用户每天可能登录多次,现在的数据是进行过去重的,所以目前是用户每天只登陆一次的
现在我们可以使用lead() over()开窗函数 用于获取当前行的下一行 展示如下
代码如下
- select userid from (
- select userid,time,lead(time) over (partition by userid order by time) as time1
- from login_record
- )
- group by userid,to_date(time,'yyyy-mm-dd')- to_date(time1,'yyyy-mm-dd')
- having count(*) >= 2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。