业务场景
在社交类网站平台业务需求中,需要计算用户的最大连续登陆天数。常用的计算是通过新建一张日期比用户登录日期少一天的关联表,再根据两张表日期是否相等来进行比较判断,再经过多次运算得出结果。现在介绍一种比较优化的方法,可以节省数据库计算耗费的资源。
场景模拟
这里做一个小的场景模拟求用户的最大连续登陆天数。一般在业务系统后台数据库中,有两个字段是已知的,即用户id与用户登录时间。如果数据库表没有明确给出已知字段与原始数据,也可以通过数据提取在数据库创建相关表,如图所示:
算法解答
(1)首先按用户登录时间升序排序
执行语句:
select user_id,login_data,row_number() over(
partition by user_id order by login_data
) as sort fro