【腾讯】查询首周最受欢迎的 Top3 课程
WHERE 条件JOIN 连接聚合函数GROUP BY日期函数ORDER BY用户行为分析排行榜面试真题
题目描述
来源:腾讯 SQL 面试真题
课程平台希望根据课程发布后的首周观看表现,找出最受欢迎的课程。
数据表
course_info_tb 课程信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| cid | BIGINT | 课程 ID,主键 |
| tag | VARCHAR(32) | 视频类别 |
| release_date | DATE | 发布日期 |
| duration | INT | 视频时长,单位分钟 |
play_record_tb 用户观看记录表
| 字段 | 类型 | 说明 |
|---|---|---|
| uid | BIGINT | 用户 ID |
| cid | BIGINT | 课程 ID |
| start_time | DATETIME | 开始观看时间 |
| end_time | DATETIME | 结束观看时间 |
| score | DECIMAL(3,1) | 用户评分 |
统计口径
- 课程平均评分按该课程全部观看记录中的
score计算;题目未限定评分时间范围。 - 首周观看窗口为发布日当天至发布后第 6 个自然日,即
DATEDIFF(DATE(start_time), release_date) BETWEEN 0 AND 6。 - 观看量为首周观看记录数;总播放时长为首周记录的观看分钟数之和。
- 平均评分小于 3 的课程不参与排名。
- 观看量越大越受欢迎;观看量相同时,总播放时长越长越受欢迎。
- 最多返回 3 门课程;不足 3 门时全部返回。
期望输出列
| 列名 | 说明 |
|---|---|
| cid | 课程 ID |
| view_count | 发布后一周内的观看次数 |
| total_play_minutes | 发布后一周内的总播放时长,单位分钟 |
数据样例
| cidPKBIGINT | tagVARCHAR(32) | release_dateDATE | durationINT |
|---|---|---|---|
| 9001 | sql | 2022-01-01 | 60 |
| 9002 | sql | 2022-01-01 | 90 |
| 9003 | sql | 2022-01-01 | 45 |
| 9004 | java | 2022-01-10 | 50 |
| 9005 | java | 2022-01-01 | 40 |
输入数据显示 5 / 5 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里