这篇文章主要为大家展示了“sql怎么查询连续登录的用户情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL怎么查询连续登录的用户情况”这篇文章吧。以连续3天为例,使用工具:MySQL。创建S
这篇文章主要为大家展示了“sql怎么查询连续登录的用户情况”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQL怎么查询连续登录的用户情况”这篇文章吧。
创建SQL表:
create table if not exists orde(id varchar(10),date datetime,orders varchar(10));insert into orde values('1' , '2019/1/1',10 );insert into orde values('1' , '2019/1/2',109 );insert into orde values('1' , '2019/1/3',150 );insert into orde values('1' , '2019/1/4',99);insert into orde values('1' , '2019/1/5',145);insert into orde values('1' , '2019/1/6',1455);insert into orde values('1' , '2019/1/7',199);insert into orde values('1' , '2019/1/8',188 );insert into orde values('4' , '2019/1/1',10 );insert into orde values('2' , '2019/1/2',109 );insert into orde values('3' , '2019/1/3',150 );insert into orde values('4' , '2019/1/4',99);insert into orde values('5' , '2019/1/5',145);insert into orde values('6' , '2019/1/6',1455);insert into orde values('7' , '2019/1/7',199);insert into orde values('8' , '2019/1/8',188 );insert into orde values('9' , '2019/1/1',10 );insert into orde values('9' , '2019/1/2',109 );insert into orde values('9' , '2019/1/3',150 );insert into orde values('9' , '2019/1/4',99);insert into orde values('9' , '2019/1/6',145);insert into orde values('9' , '2019/1/9',1455);insert into orde values('9' , '2019/1/10',199);insert into orde values('9' , '2019/1/13',188 );
查看数据表:
使用row_number() over() 排序函数计算每个id的排名,SQL如下:
select *,row_number() over(partition by id order by date ) 'rank'from ordewhere orders is not NULL;
查看数据表:
3.将date日期字段减去rank排名字段,SQL如下:
select *,DATE_SUB(a.date,interval a.rank day) 'date_sub'from(select *,row_number() over(partition by id order by date ) 'rank'from ordewhere orders is not NULL) a;
查看数据:
根据id和date分组并计算分组后的数量(count)、计算最早登录和最晚登录的时间,SQL如下:
select b.id,min(date) 'start_time',max(date) 'end_time',count(*) 'date_count'from(select *,DATE_SUB(a.date,interval a.rank day) 'date_sub'from(select *,row_number() over(partition by id order by date ) 'rank'from ordewhere orders is not NULL) a) bgroup by b.date_sub,idhaving count(*) >= 3;
查看数据:
以上是“SQL怎么查询连续登录的用户情况”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!
--结束END--
本文标题: SQL怎么查询连续登录的用户情况
本文链接: https://www.lsjlt.com/news/303250.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0