SQL 刷题/拉链表查询:追踪用户状态变化
上一题下一题困难通过率 69%

拉链表查询:追踪用户状态变化

WHERE 条件子查询日期函数数据清洗

题目描述

给定一张 user_status_history 拉链表,记录用户状态的历史变化:

  • user_id: 用户ID
  • status: 用户状态(普通/VIP/SVIP)
  • start_date: 状态生效日期
  • end_date: 状态失效日期('9999-12-31' 表示当前有效)

请查询截至 2024-03-15 时:

  1. 每个用户在该日期的状态
  2. 该状态已持续的天数
  3. 该用户历史上的状态变更次数(首次记录不算变更)

按 user_id 排序。

期望输出列

列名说明
user_id用户ID
current_status当前状态
days_in_status已持续天数
change_count状态变更次数

数据样例

当前运行环境
user_idINTEGERstatusTEXTstart_dateTEXTend_dateTEXT
1普通2024-01-012024-02-01
1VIP2024-02-012024-03-01
1SVIP2024-03-019999-12-31
2普通2024-01-152024-03-10
2VIP2024-03-109999-12-31
3普通2024-02-019999-12-31
4VIP2024-01-012024-01-20
4普通2024-01-202024-02-15
输入数据显示 8 / 10
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里