【字节跳动】查询播放量最高的前三个视频
聚合函数GROUP BYORDER BYLIMIT用户行为分析排行榜面试真题
题目描述
来源:字节跳动 SQL 面试真题
视频平台使用观看记录表记录用户的视频观看行为。请统计每个视频的播放量,并找出播放量最高的 Top3 视频。
数据表
play_record_tb 用户观看记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 观看记录 ID,主键 |
| uid | BIGINT | 用户 ID |
| cid | BIGINT | 视频 ID |
| start_time | DATETIME | 开始观看时间 |
| end_time | DATETIME | 结束观看时间 |
| score | INT | 用户打分 |
播放量口径
- 每条
play_record_tb记录代表一次视频播放。 - 按
cid分组使用COUNT(*)统计视频播放量。 - 播放量按降序排列,取前 3 个视频;视频不足 3 个时全部输出。
- 播放量相同时按
cid升序作为稳定排序条件。 - 播放量结果使用
ROUND(..., 3)保留 3 位小数。
期望输出列
| 列名 | 说明 |
|---|---|
| cid | 视频 ID |
| play_count | 视频播放量,保留 3 位小数 |
数据样例
| idPKBIGINT | uidBIGINT | cidBIGINT | start_timeDATETIME | end_timeDATETIME | scoreINT |
|---|---|---|---|---|---|
| 1 | 1001 | 9001 | 2022-01-01 08:30:00 | 2022-01-01 09:00:00 | 4 |
| 2 | 1002 | 9001 | 2022-01-01 08:35:00 | 2022-01-01 09:05:00 | 3 |
| 3 | 1003 | 9001 | 2022-01-01 08:40:00 | 2022-01-01 09:10:00 | 5 |
| 4 | 1001 | 9002 | 2022-01-01 09:00:00 | 2022-01-01 09:30:00 | 4 |
| 5 | 1002 | 9002 | 2022-01-01 09:05:00 | 2022-01-01 09:35:00 | 4 |
| 6 | 1003 | 9002 | 2022-01-01 09:10:00 | 2022-01-01 09:40:00 | 3 |
| 7 | 1004 | 9002 | 2022-01-01 09:15:00 | 2022-01-01 09:45:00 | 5 |
| 8 | 1001 | 9003 | 2022-01-01 10:00:00 | 2022-01-01 10:20:00 | 4 |
输入数据显示 8 / 10 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里