面试中经常会遇到使用SQL解决连续N天问题,此类问题最关键的点在于如何找到“连续”的规律;
示例:已有一张用户登录日期表,表中有用户ID和登录日期,找出连续3天登录的所有用户ID。
| 用户ID | 登录日期 |
|---|---|
| 1001 | 20210101 |
| 1001 | 20210102 |
| 1001 | 20210103 |
| 1002 | 20210101 |
| 1002 | 20210102 |
| 1002 | 20210104 |
| 1003 | 20210101 |
方法一:
使用登录日期与用户ID分组排名的差值相等规律,如果用户登录日期连续,则登录日期与排名的差值相等。
| 用户ID | 登录日期 | 排序 | 日期差 |
|---|---|---|---|
| 1001 | 20210101 | 1 | 20210100 |
| 1001 | 20210102 | 2 | 20210100 |
| 1001 | 20210103 | 3 | 20210100 |
| 1002 | 20210101 | 1 | 20210100 |
| 1002 | 20210102 | 2 | 20210100 |
| 1002 | 20210104 | 3 | 20210101 |
| 1003 | 20210101 | 1 | 20210100 |
将连续问题转换为按用户分组统计日期差个数,代码如下:

结果如下图:

最后
以上就是心灵美大地最近收集整理的关于SQL解决连续n天登录问题的全部内容,更多相关SQL解决连续n天登录问题内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复