WITH completed_users AS (
-- 2025年3月完成课程 DS-102 的学员(去重)
SELECT DISTINCT user_id
FROM course_completions
WHERE course_id = 'DS-102'
AND completion_date BETWEEN '2025-03-01' AND '2025-03-31'
),
course_avg_rating AS (
-- 计算这些学员对课程 DS-102 的平均星级及分类
SELECT
cr.user_id,
ROUND(AVG(cr.rating), 2) AS average_rating,
CASE
WHEN AVG(cr.rating) >= 4.0 THEN '优质反馈学员'
ELSE '普通反馈学员'
END AS feedback_type
FROM content_reviews cr
JOIN completed_users cu ON cr.user_id = cu.user_id
WHERE cr.course_id = 'DS-102'
GROUP BY cr.user_id
),
latest_review AS (
-- 获取每位学员的最近一次评价日期(不限课程)
SELECT
user_id,
DATE(MAX(review_date)) AS latest_review_date
FROM content_reviews
WHERE user_id IN (SELECT user_id FROM completed_users)
GROUP BY user_id
)
SELECT
ca.user_id,
ca.average_rating,
ca.feedback_type,
lr.latest_review_date
FROM course_avg_rating ca
JOIN latest_review lr ON ca.user_id = lr.user_id
ORDER BY
FIELD(feedback_type, '普通反馈学员', '优质反馈学员'), -- 普通反馈学员在前
ca.average_rating DESC,
ca.user_id ASC;