SQL查询连续登陆7天以上的用户的方法实现
作者:kww 时间:2024-01-18 10:16:44
查询7天连续登陆用户这个问题很经典,解决方法也有很多,这里我讲一下笔者的方法,希望对大家有帮助。
具体思路:
1、因为每天用户登录次数可能不止一次,所以需要先将用户每天的登录日期去重。
2、再用row_number() over(partition by _ order by _)函数将用户id分组,按照登陆时间进行排序。
3、计算登录日期减去第二步骤得到的结果值,用户连续登陆情况下,每次相减的结果都相同。
4、按照id和日期分组并求和,筛选大于等于7的即为连续7天登陆的用户。
表信息如下图
第一步:用户登录日期去重
select DISTINCT date(date) as 日期,id from orde;
结果为:
第二步:用row_number() over()函数计数
select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a;
结果为:
第三步:日期减去计数值得到结果
select *,date(日期)-cum as 结果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b;
结果:
第四步:根据id和结果分组并计算总和,大于等于7的即为连续登陆7天的用户
select id,count(*) from (select *,date(日期)-cum as 结果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b)c GROUP BY id,结果 having count(*)>=7;
结果为:
用了多次嵌套查询,最终得到我们需要的结果。
来源:https://www.cnblogs.com/ikww/p/12012831.html
标签:SQL,查询,连续,登陆,用户
0
投稿
猜你喜欢
用Python实现读写锁的示例代码
2022-09-19 13:51:01
python中numpy.zeros(np.zeros)的使用方法
2023-10-08 17:40:07
详解使用Pytorch Geometric实现GraphSAGE模型
2021-09-30 21:30:18
Python实现的文本简单可逆加密算法示例
2023-06-05 07:35:11
Node.js(安装,启动,测试)
2024-05-13 09:29:28
用js实现放大镜效果
2023-09-19 18:29:29
Python HTTP客户端自定义Cookie实现实例
2023-12-16 01:19:30
GO语言中接口和接口型函数的具体使用
2023-06-18 09:08:40
vue前端项目打包成Docker镜像并运行的实现
2023-07-02 17:05:55
MySQL的一级防范检查列表
2011-12-14 18:39:22
ASP中的Debug类--VBScript
2008-10-24 09:38:00
Javascript中的arguments对象
2024-04-30 09:50:54
Jsp+Servlet实现文件上传下载 删除上传文件(三)
2023-06-27 16:29:29
数据库主键的故事
2008-05-31 07:50:00
JavaScript中windows.open()、windows.close()方法详解
2024-04-18 09:30:57
解读等值线图的Python绘制方法
2021-11-21 19:54:08
如何通过python计算圆周率PI
2021-01-24 10:29:25
python实现员工管理系统
2022-01-03 05:20:15
Python小程序之在图片上加入数字的代码
2023-11-14 08:26:48
CSS网页设计时关于字体大小的设计
2008-10-23 13:42:00