如何使用SQL查询至少连续n天登录的用户
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"如何使用SQL查询至少连续n天登录的用户",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用SQL查询至少连续n天登录的用户"
千家信息网最后更新 2026年11月03日如何使用SQL查询至少连续n天登录的用户
这篇文章主要为大家展示了"如何使用SQL查询至少连续n天登录的用户",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用SQL查询至少连续n天登录的用户"这篇文章吧。
1.创建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 );查看数据表:

2.使用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;
查看数据:
4.根据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查询至少连续n天登录的用户"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
登录
数据
用户
查询
内容
篇文章
字段
数据表
分组
学习
帮助
函数
数量
日期
时间
易懂
更多
条理
知识
编带
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网产品
金融科技创新监管互联网金融
深圳互联网科技公司
互联网金融 科技金融
互联网 科技创业
互联网科技网站
大白互联网科技
深圳市运趣互联网科技有限公司
中国的互联网科技企业的崛起
坤平互联网科技
工业互联网山东科技大学
科技互联网的核心竞争力
梅州GM互联网络科技有限公司
互联网相关科技技术
互联网风格科技公司名称
信承诺互联网科技有限公司
萌小萌互联网科技河南有限公司
福建互联网展示科技馆设计
玉溪新华互联网科技怎么选
互联网科技对化妆品行业
智能科技公司是互联网公司吗
亿策互联网科技
新浪科技互联网
科技互联网创业计划书
互联网科技咨询
山东吉时兔互联网科技有限公司
西藏七维空间互联网科技有限公司
小米互联网科技园设置
成都互联网科技公司工作好不好
互联网科技包装股