天天看点

大厂高频面试题-连续登录问题

1

背景

      对于数据开发人员来说,手写sql是比较熟悉的了,就有这样一道题,面试时需要手写sql,这就是非常经典的连续登录问题,大厂小厂都爱问,这种题说简单也不简单,说难也不难,关键是要有思路。

2

真题

hql统计连续登陆的三天及以上的用户

这个问题可以扩展到很多相似的问题:连续几个月充值会员、连续天数有商品卖出、连续打车、连续逾期。

数据提供

输出字段

3

群内讨论

这道题在群里发出后,大家就展开了激烈的讨论:

大厂高频面试题-连续登录问题
大厂高频面试题-连续登录问题
大厂高频面试题-连续登录问题

4

解决方案

可以看出来,有很多种不同的解决方案。

这里就为大家提供一种比较常见的方案:

建表

导数据

验证数据

结果

5

思路

先把数据按照用户id分组,根据登录日期排序

2.用登录日期减去排序数字rn,得到的差值日期如果是相等的,则说明这两天肯定是连续的

3.根据user_id和日期差date_diff 分组,最小登录日期即为此次连续登录的开始日期start_date,最大登录日期即为结束日期end_date,登录次数即为分组后的count(1)

6

结束语

大厂高频面试题-连续登录问题

继续阅读