with latest_review as (
select
user_id,
date(max(review_date)) as latest_review_date
from content_reviews
group by user_id
)
select
t3.user_id,
average_rating,
feedback_type,
latest_review_date
from (
select
t1.user_id,
round(avg(rating), 2)as average_rating,
(
case
when avg(rating) >= 4.0 then '优质反馈学员'
else '普通反馈学员'
end
) as feedback_type
from content_reviews t1
left join course_completions t2 on t1.user_id=t2.user_id and t1.course_id=t2.course_id
where t1.user_id in (
select user_id
from course_completions
where course_id= 'DS-102' and date_format(completion_date, '%Y-%m')='2025-03'
) and t1.course_id= 'DS-102'
group by t1.user_id
)as t3
left join latest_review t4 on t3.user_id=t4.user_id
order by convert(feedback_type using gbk) asc, average_rating desc, t3.user_id asc
查询结果请先按feedback_type升序排列(即 "普通反馈学员" 在前)
如果字符集采用的是 gbk(汉字编码字符集),直接在查询语句后边添加 ORDER BY:
order by convert(feedback_type using gbk) asc
但此时我们发现并不能按照拼音首字母进行排序,因此字符集采用的是 utf8,需要先对字段进行转码然后排序:
order by convert(feedback_type using gbk) asc

京公网安备 11010502036488号