SQL实战篇:SQL解决连续X天的问题

本文探讨如何使用SQL解决连续X天登录的问题,通过一个案例详细解释连续登录的定义和计算方法,涉及窗口函数的应用。同时,提到了在MySQL中遇到的`sql_mode=only_full_group_by`错误及其解决方案。
摘要由CSDN通过智能技术生成

上一节内容,通过用户留存率的案例,讲解了解决近X天问题的思路,接下来,在本节内容来看看关于连续X天的问题,该类问题是面试和实际业务中经常需要解决的问题。

首先对连续指标、做个定义,如下:

  • 1日连续:当日登录后,第二天也登录了,比如2021.2.10登录过,2021.2.11登录的算作1日连续 。
  • 3日连续:当日登录后,第二和三天也登录了,比如2021.2.10登录过,2021.2.11和2021.2.12登录的算作3日连续 。
  • 以此类推···

现假设,有一张用户登录表t_user_login,字段user_id和login_time分别表示用户id和登陆时间。接下来,我们通过SQL来求连续3日、7日登陆的用户。

一般,解决此类连续X天问题的思路如下:

  • 第一步,可以使用窗口函数对user_id分组排序rn;
  • 第二步,用登陆时间减去排序后的序号rn;
  • 第三步,如果日期连续的话,则得到的这个日期会相同。

下面,我们通过一个案例来进行说明。

首先,我们先建t_user_login表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Soyoger

听说打赏的都进了福布斯排行榜。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值