-- 统计不同用户等级的人完成的试卷数
-- 统计不同用户等级的人各得分等级试卷数
SELECT level,
score_grade,
ROUND(
COUNT(uid) / total_cnt, 3
) AS ratio
FROM (
SELECT level, uid,
( CASE
WHEN score >= 90 THEN '优'
WHEN score >= 75 THEN '良'
WHEN score >= 60 THEN '中'
ELSE '差'
END
) AS score_grade,
COUNT(*) OVER(PARTITION BY level) AS total_cnt
FROM exam_record
JOIN user_info
USING(uid)
WHERE score IS NOT NULL
) grade_t
GROUP BY level, score_grade
ORDER BY level DESC, ratio DESC