sql常见笔试题目类型(3)最大连续天数

最大连续天数的问题也是非常常见的一个题型,他也有常见的形式,比如连续签到n次以上的人数
摘要由CSDN通过智能技术生成

最大连续天数的问题也是非常常见的一个题型,比较常见的形式就是连续签到n次以上的人数,统计最大连续登录天数等等。
最大连续天数的有一个较为通用的解法,这个通用解法放在后面具体描述。

解题思路

首先思考一个简单的问题,怎么统计连续两天登录人数:连续两天登录就是一个人在登录后第二天继续登录了,只要找到登录日期的第二天有登录记录就行了。显然通过自连接,很容易就能够做到。
然后是连续三天登录人数,显然通过两次自连接,同样能够得到连续三天登录的人数。但是当连续n天登录人群的n足够大的时候,比如7天连续登录,30天连续登录,再用自连接来做就很难完成了。
从这个角度发散一下,连续n天登录就是为了找到连续的一段日期,如果对日期进行排序(假设日期没有重复),每一段连续的日期,减去它的排名,得到的日期是相同的。

日期 排名 差值
1-1 1 1-0
1-2 2 1-0
1-3 3 1-0
1-6 4 1-2
1-10 5 1-5
1-11 6 1-5
1-12 7 1-5

在得到差值之后,很显然,统计相同值出现的次数就是连续登录

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值