SQL查询连续登陆用户的思路
发布时间:2024-01-01 21:49:53 所属栏目:MsSql教程 来源:DaWei
导读: 关于“SQL查询连续登陆用户的思路及操作是什么”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,
关于“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; 用了多次嵌套查询,最终得到我们需要的结果。 上述内容具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助。 (编辑:莆田站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – SQL Server 2005:复制SQL Server代理作业?
- SIMS M-230:品味古典黑音乐 聆听自然秋之歌
- 微软IE暴露缺陷 5行代码就能使浏览器崩溃
- sql – 从已连接表的列表中选择唯一列名
- SQL Server调用外部exe执行程序要注意哪些事项
- HTML转PDF的纯客户端和纯服务端实现方案
- sql-server-2005 – 在SQL Server 2005中分析非常大的结果集
- SQL Server性能调优杂记(二)----傻瓜机的失效效应续
- 一步步教你配置SQL SERVER合并复制(二)建立域用户
- sql-server – 在SQL Server 2005中使用数据生成脚本
推荐文章
站长推荐