with a as (select level,score, (case when score >=90 then '优' when score>=75 then '良' when score>=60 then '中' else '差' end) as score_grade from user_info ui join exam_record er on ui.uid = er.uid where score is not null) select distinct level, score_grade, round((count(score_grade) over (partition by level,score_grade))/(count(*) over(partition by level)),3) as ratio from a order by level desc,ratio desc
中等