题解 | 在线教育平台活跃学员课程评价分析

在线教育平台活跃学员课程评价分析

https://www.nowcoder.com/practice/fc255da3eb464571a757980951ff4e79

WITH t1 AS (
    SELECT *
    FROM content_reviews
    WHERE course_id = 'DS-102'
)
SELECT 
    t1.user_id,
    ROUND(AVG(t1.rating), 2) AS average_rating,
    CASE 
        WHEN AVG(t1.rating) >= 4.0 THEN '优质反馈学员' 
        ELSE '普通反馈学员' 
    END AS feedback_type,
    DATE_FORMAT(MAX(cr_all.review_date), '%Y-%m-%d') AS latest_review_date
FROM t1
JOIN course_completions c ON t1.user_id = c.user_id
LEFT JOIN content_reviews cr_all ON t1.user_id = cr_all.user_id
WHERE c.course_id = 'DS-102' 
  AND c.completion_date BETWEEN '2025-03-01' AND '2025-03-31'
GROUP BY t1.user_id
ORDER BY feedback_type DESC, average_rating DESC, t1.user_id ASC;

SELECT user_id, ROUND(avg_r, 2) AS average_rating, CASE WHEN avg_r >= 4.0 THEN '优质反馈学员' ELSE '普通反馈学员' END AS feedback_type, DATE_FORMAT(latest_date, '%Y-%m-%d') AS latest_review_date FROM ( SELECT t.user_id, COALESCE(AVG(CASE WHEN cr.course_id = 'DS-102' THEN cr.rating END), 0) AS avg_r, MAX(cr.review_date) AS latest_date FROM course_completions t JOIN content_reviews cr ON t.user_id = cr.user_id WHERE t.course_id = 'DS-102' AND t.completion_date BETWEEN '2025-03-01' AND '2025-03-31' GROUP BY t.user_id ) tmp ORDER BY feedback_type DESC, average_rating DESC, user_id ASC

精减版

全部评论
SELECT t.user_id, -- 计算DS-102课程平均分,空值补0并保留2位小数 ROUND(COALESCE(AVG(CASE WHEN cr.course_id = 'DS-102' THEN cr.rating END), 0), 2) AS average_rating, -- 根据平均分判断反馈类型 CASE WHEN COALESCE(AVG(CASE WHEN cr.course_id = 'DS-102' THEN cr.rating END), 0) >= 4.0 THEN '优质反馈学员' ELSE '普通反馈学员' END AS feedback_type, -- 取该学员所有评价的最新日期并格式化 DATE_FORMAT(MAX(cr.review_date), '%Y-%m-%d') AS latest_review_date FROM course_completions t -- 关联评价表(确保只取有评价的学员,与原JOIN逻辑一致) JOIN content_reviews cr ON t.user_id = cr.user_id -- 筛选2025年3月完成DS-102课程的学员 WHERE t.course_id = 'DS-102' AND t.completion_date BETWEEN '2025-03-01' AND '2025-03-31' -- 按用户分组统计 GROUP BY t.user_id -- 按反馈类型降序、平均分降序、用户ID升序排序 ORDER BY feedback_type DESC, average_rating DESC, t.user_id ASC;
点赞 回复 分享
发布于 02-27 08:41 山东

相关推荐

03-10 11:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务