SQL专题-近30天用户连续登陆的最大天数

本文分享了一种SQL解决方案,用于找出近30天内用户连续登录的最大天数。通过用户登录日志表,利用窗口函数row_number()计算登录排名,并通过差值计算连续登录天数,最终通过分组和计数得到每个用户的最大连续登录天数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近面试的时候被面试官问到“近30天用户连续登陆的最大天数”的SQL,没有答上来,在网上看到其他人的答案后醍醐灌顶,解法竟然如此美妙,分享给大家。
假设我们有一张用户登录日志表login,有用户(user_id)和登陆日期(login_date)两列数据如下:

user_id login_date
A 2022-05-01
A 2022-05-02
A 2022-05-03
A 2022-05-10
A 2022-05-11
B 2022-05-01
B 2022-05-02
C 2022-05-07
C 2022-05-09

我们先对每个用户按访问时间进行排序生成login_rank,然后将login_rank列和login_date列做差,如果是连续登陆,这个差值会是固定的。按用户和差值进行分组计数再取最大值,就得到了每个用户连续登陆的天数的最大值。

<
user_id login_date login_rank
A 2022-05-01 1
A 2022-05-02 2
A 2022-05-03
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值