题解 | #各用户等级的不同得分表现占比#
各用户等级的不同得分表现占比
https://www.nowcoder.com/practice/ebff819fd38c46db8a42dfe43ca7b33a
WITH a1 AS ( SELECT level , CASE WHEN score >= 90 THEN '优' WHEN score >= 75 THEN '良' WHEN score >= 60 THEN '中' ELSE '差' END AS score_grade #用CASE WHEN判断出优良中差 , COUNT(level) AS ct_l #计算出每个优良中差的个数 , SUM(COUNT(level)) OVER (PARTITION BY level) AS sm_l #用窗口函数计算出每个level下一共有多少人数 FROM user_info JOIN exam_record USING (uid) WHERE score IS NOT NULL #筛选出有得分的人 GROUP BY level, score_grade ) SELECT level, score_grade, ROUND(ct_l / sm_l,3) AS ratio FROM a1 ORDER BY level DESC, ratio DESC