【京东】允许间隔一天的最大连续登录天数
GROUP BY窗口函数日期函数DISTINCT面试真题
题目描述
来源:京东数开面试
给定一张 login_logs 表:
user_id: 用户IDlogin_date: 登录日期(格式:YYYY-MM-DD)
同一用户同一天可能有多条登录记录。现在采用下面的连续规则:
- 相邻两次登录日期相差1天,视为连续
- 中间仅间隔1个自然日,即相邻两次登录日期相差2天,也视为连续
- 相邻两次登录日期相差超过2天,则开启一段新的连续记录
请计算每个用户单段记录中的最大实际登录天数,按 user_id 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| user_id | 用户ID |
| max_streak_days | 最大连续段中的实际登录天数 |
数据样例
| user_idINTEGER | login_dateTEXT |
|---|---|
| 1 | 2024-01-01 |
| 1 | 2024-01-03 |
| 1 | 2024-01-05 |
| 1 | 2024-01-08 |
| 2 | 2024-01-01 |
| 2 | 2024-01-02 |
| 2 | 2024-01-04 |
| 2 | 2024-01-06 |
输入数据显示 8 / 14 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里