【携程】查询连续登录不少于 3 天的新注册用户
WHERE 条件JOIN 连接日期函数ORDER BYDISTINCT用户行为分析留存分析面试真题
题目描述
来源:携程 SQL 面试真题
某产品需要分析 2022 年 2 月 8 日注册的新用户在后续几天的登录情况,找出连续登录不少于 3 天的用户。
数据表
register_tb 用户注册信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 用户 ID |
| reg_time | DATETIME | 注册时间 |
| reg_port | VARCHAR | 注册端口 |
login_tb 用户登录信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| log_id | BIGINT | 登录动作 ID |
| user_id | BIGINT | 用户 ID |
| log_time | DATETIME | 登录时间 |
| log_port | VARCHAR | 登录端口 |
题目要求
- 只统计在 2022 年 2 月 8 日注册的用户。
- 连续登录按日历日判断,相邻两个登录日期必须相差 1 天。
- 连续登录天数不少于 3 天的用户需要输出。
- 不要求登录端口与注册端口一致。
- 题目保证登录表中同一用户单日最多保留一条登录记录。
- 只输出 user_id,并按 user_id 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| user_id | 连续登录不少于 3 天的新注册用户 ID |
数据样例
| user_idPKBIGINT | reg_timeDATETIME | reg_portVARCHAR(20) |
|---|---|---|
| 1101 | 2022-02-08 07:23:15 | pc |
| 1102 | 2022-02-08 09:12:22 | app |
| 1103 | 2022-02-08 09:35:45 | m |
| 1104 | 2022-02-08 09:41:01 | app |
| 1105 | 2022-02-08 12:01:01 | app |
| 1106 | 2022-02-08 17:22:13 | app |
| 1107 | 2022-02-08 18:26:21 | pc |
| 1108 | 2022-02-08 19:16:21 | pc |
输入数据显示 8 / 9 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里