拉链表查询:追踪用户状态变化
WHERE 条件子查询日期函数数据清洗
题目描述
给定一张 user_status_history 拉链表,记录用户状态的历史变化:
user_id: 用户IDstatus: 用户状态(普通/VIP/SVIP)start_date: 状态生效日期end_date: 状态失效日期('9999-12-31' 表示当前有效)
请查询截至 2024-03-15 时:
- 每个用户在该日期的状态
- 该状态已持续的天数
- 该用户历史上的状态变更次数(首次记录不算变更)
按 user_id 排序。
期望输出列
| 列名 | 说明 |
|---|---|
| user_id | 用户ID |
| current_status | 当前状态 |
| days_in_status | 已持续天数 |
| change_count | 状态变更次数 |
数据样例
| user_idINTEGER | statusTEXT | start_dateTEXT | end_dateTEXT |
|---|---|---|---|
| 1 | 普通 | 2024-01-01 | 2024-02-01 |
| 1 | VIP | 2024-02-01 | 2024-03-01 |
| 1 | SVIP | 2024-03-01 | 9999-12-31 |
| 2 | 普通 | 2024-01-15 | 2024-03-10 |
| 2 | VIP | 2024-03-10 | 9999-12-31 |
| 3 | 普通 | 2024-02-01 | 9999-12-31 |
| 4 | VIP | 2024-01-01 | 2024-01-20 |
| 4 | 普通 | 2024-01-20 | 2024-02-15 |
输入数据显示 8 / 10 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里