WITH filtered_student_202503 AS(
SELECT user_id, course_id, completion_date
FROM course_completions
WHERE course_id = 'DS-102' AND completion_date >= '2025-03-01' AND completion_date < '2025-04-01'
),
avg_rating AS (
SELECT cr.user_id, ROUND(AVG(cr.rating), 2) AS average_rating
FROM content_reviews cr JOIN filtered_student_202503 fs USING(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
GROUP BY user_id
)
SELECT fs.user_id, ar.average_rating,
CASE
WHEN ar.average_rating >= 4.0 THEN '优质反馈学员'
ELSE '普通反馈学员'
END AS feedback_type,
lr.latest_review_date
FROM filtered_student_202503 fs
JOIN avg_rating ar ON fs.user_id = ar.user_id
JOIN latest_review lr ON fs.user_id = lr.user_id
ORDER BY
CASE
WHEN feedback_type = '普通反馈学员' THEN 1
WHEN feedback_type = '优质反馈学员' THEN 2
END,
average_rating DESC,
user_id ASC;