背景 在一个在线教育平台中,我们希望分析完成了高级课程的学员对其所学课程内容的评价情况,以识别出高参与度且提供高质量反馈的学员。为此,我们需要关联学员的课程完成记录和他们提交的内容评价。 表结构和字段说明 表1:课程完成记录表 (course_completions) completion_id: (INT, 主键) 完成记录的唯一标识。 user_id: (INT) 学员的唯一标识。 course_id: (VARCHAR) 课程的唯一标识。 completion_date: (DATE) 课程完成日期。 表2:内容评价表 (content_reviews) review_id: (INT, 主键) 评价的唯一标识。 user_id: (INT) 提交评价的学员ID。 course_id: (VARCHAR) 评价内容所属的课程ID。 rating: (INT) 评价星级,范围1-5。 review_date: (DATETIME) 评价提交的具体时间。 任务要求 请查询在2025年3月完成了 “数据科学进阶” (course_id= 'DS-102') 课程的所有学员。对于这些学员,请计算他们对该课程 (DS-102) 所有评价的平均星级,并找出他们最近一次提交评价的日期(不限课程)。同时,根据平均星级将学员分为两类:平均星级大于等于4.0的为 "优质反馈学员",否则为 "普通反馈学员"。 查询结果要求 请返回以下字段: 学员ID (user_id) 平均星级 (average_rating),结果四舍五入保留2位小数。 反馈类型 (feedback_type) 最近评价日期 (latest_review_date),格式为 'YYYY-MM-DD'。 排序规则 查询结果请先按feedback_type升序排列(即 "普通反馈学员" 在前),然后按average_rating降序排列,最后按user_id升序排列。
示例1
输入
-- 创建课程完成记录表
CREATE TABLE course_completions (
completion_id INT,
user_id INT,
course_id VARCHAR(10),
completion_date DATE
);
-- 创建内容评价表
CREATE TABLE content_reviews (
review_id INT,
user_id INT,
course_id VARCHAR(10),
rating INT,
review_date DATETIME
);
-- 插入示例数据
-- 课程完成记录
INSERT INTO course_completions (completion_id, user_id, course_id, completion_date) VALUES
(1, 101, 'DS-102', '2025-03-15'),
(2, 102, 'DS-102', '2025-03-20'),
(3, 103, 'PY-101', '2025-03-22'), -- 其他课程
(4, 104, 'DS-102', '2025-04-01'), -- 其他月份
(5, 101, 'PY-101', '2025-04-05'),
(6, 105, 'DS-102', '2025-03-28');
-- 内容评价
INSERT INTO content_reviews (review_id, user_id, course_id, rating, review_date) VALUES
(1, 101, 'DS-102', 5, '2025-03-10 10:00:00'),
(2, 101, 'DS-102', 4, '2025-03-14 11:00:00'),
(3, 102, 'DS-102', 3, '2025-03-18 14:00:00'),
(4, 102, 'DS-102', 4, '2025-03-21 15:00:00'),
(5, 101, 'PY-101', 5, '2025-04-10 09:00:00'), -- user_id=101 的最近评价
(6, 103, 'PY-101', 4, '2025-03-25 16:00:00'),
(7, 105, 'DS-102', 3, '2025-03-30 18:00:00'),
(8, 102, 'DS-102', 3, '2025-03-22 10:00:00');
输出
user_id|average_rating|feedback_type|latest_review_date
102|3.33|普通反馈学员|2025-03-22
105|3.00|普通反馈学员|2025-03-30
101|4.50|优质反馈学员|2025-04-10
说明
示例数据表
course_completions
| completion_id | user_id | course_id | completion_date |
|---|
| 1 | 101 | DS-102 | 2025-03-15 |
| 2 | 102 | DS-102 | 2025-03-20 |
| 3 | 103 | PY-101 | 2025-03-22 |
| 4 | 104 | DS-102 | 2025-04-01 |
| 5 | 101 | PY-101 | 2025-04-05 |
| 6 | 105 | DS-102 | 2025-03-28 |
content_reviews
| review_id | user_id | course_id | rating | review_date |
|---|
| 1 | 101 | DS-102 | 5 | 2025-03-10 10:00:00 |
| 2 | 101 | DS-102 | 4 | 2025-03-14 11:00:00 |
| 3 | 102 | DS-102 | 3 | 2025-03-18 14:00:00 |
| 4 | 102 | DS-102 | 4 | 2025-03-21 15:00:00 |
| 5 | 101 | PY-101 | 5 | 2025-04-10 09:00:00 |
| 6 | 103 | PY-101 | 4 | 2025-03-25 16:00:00 |
| 7 | 105 | DS-102 | 3 | 2025-03-30 18:00:00 |
| 8 | 102 | DS-102 | 3 | 2025-03-22 10:00:00 |
示例数据查询结果表
| user_id | average_rating | feedback_type | latest_review_date |
|---|
| 102 | 3.33 | 普通反馈学员 | 2025-03-22 |
| 105 | 3.00 | 普通反馈学员 | 2025-03-30 |
| 101 | 4.50 | 优质反馈学员 | 2025-04-10 |
加载中...