• 售前

  • 售后

热门帖子
入门百科

SQL查询连续登岸7天以上的用户的方法实现

[复制链接]
123457124 显示全部楼层 发表于 2022-1-8 10:10:10 |阅读模式 打印 上一主题 下一主题
查询7天连续登岸用户这个问题很经典,办理方法也有很多,这里我讲一下笔者的方法,希望对各人有资助。
详细思路:
1、由于每天用户登录次数大概不止一次,以是需要先将用户每天的登录日期去重。
2、再用row_number() over(partition by _ order by _)函数将用户id分组,按照登岸时间举行排序。
3、盘算登录日期减去第二步骤得到的结果值,用户连续登岸情况下,每次相减的结果都雷同。
4、按照id和日期分组并求和,筛选大于便是7的即为连续7天登岸的用户。
表信息如下图

第一步:用户登录日期去重
  1. select DISTINCT date(date) as 日期,id from orde;
复制代码
结果为:

第二步:用row_number() over()函数计数
  1. select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a;
复制代码
结果为:

第三步:日期减去计数值得到结果
  1. 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天的用户
  1. 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查询连续登岸7天以上的用户的方法实现的文章就介绍到这了,更多干系SQL查询连续登岸用户内容请搜索草根技术分享从前的文章或继承浏览下面的干系文章希望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作