SQL查询连续登陆用户的思路及操作是什么
Admin 2022-08-05 群英技术资讯 813 次浏览
关于“SQL查询连续登陆用户的思路及操作是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。查询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;
结果为:

用了多次嵌套查询,最终得到我们需要的结果。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
SQL UNION运算符用于组合两个或更多SELECT语句的结果集,而不返回任何重复的行。UNION中的每个SELECT语句必须具有相同的列数,这些列也必须具有相似的数据类型,每个SELECT语句中的列也必须以相同的顺序排列,每个SELECT语句必须有相同数目的列表达式 但是每个SELECT语句的长度不必相同
本文主要讲解了SQL中的数据类型以及几个需要注意的地方,简短的内容,深入的理解。有兴趣的朋友可以看下
SQL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数,有不少朋友对于RAND 函数的使用比较感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
本文详细讲解了SQL Server中的约束(constraints),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
我们数据库的数据表中有大量的数据,我们查询的时候重复的数据都会展示而且查询时间长,那么要怎么实现sql查询去掉重复数据呢?下面小编给大家分享几种SQL查询去掉重复数据的方法,小编觉得比较实用,大家可以看看。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008