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

中等