【字节跳动】统计晚间各直播间在线人数
JOIN 连接聚合函数GROUP BY日期函数ORDER BYDISTINCT用户行为分析面试真题
题目描述
来源:字节跳动 SQL 面试真题
短视频平台需要统计某天晚上 23:00 至次日 00:00 期间,各直播间出现过的在线用户数。
数据表
user_view_tb 用户观看记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 用户 ID |
| room_id | BIGINT | 直播间 ID |
| in_time | TIME | 进入直播间时间 |
| out_time | TIME | 离开直播间时间 |
room_info_tb 直播间信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| room_id | BIGINT | 直播间 ID,主键 |
| room_name | VARCHAR | 直播间名称 |
| room_type | VARCHAR | 直播间类型 |
在线人数口径
- 统计时段为
23:00:00至24:00:00,两个边界时刻都包含在内。 - 观看区间只要与统计时段存在交集,该用户就算在该直播间在线过。
- 同一用户在同一直播间有多条观看记录时,只计 1 人。
- 没有用户在该时段在线的直播间也要输出,人数记为 0。
题目要求
- 输出直播间 ID、直播间名称和在线人数。
- 按在线人数降序排列。
- 在线人数相同时,按直播间 ID 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| room_id | 直播间 ID |
| room_name | 直播间名称 |
| user_count | 23:00 至 24:00 期间的去重在线人数 |
数据样例
| user_idBIGINT | room_idBIGINT | in_timeTIME | out_timeTIME |
|---|---|---|---|
| 1 | 1001 | 10:00:00 | 10:30:00 |
| 2 | 1001 | 10:01:00 | 10:05:00 |
| 3 | 1001 | 10:05:00 | 10:20:00 |
| 1 | 1002 | 19:05:00 | 20:05:00 |
| 2 | 1002 | 19:15:00 | 19:55:00 |
| 2 | 1002 | 20:15:00 | 20:45:00 |
| 3 | 1002 | 20:15:00 | 20:45:00 |
| 4 | 1003 | 22:15:00 | 23:15:00 |
输入数据显示 8 / 16 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里