题解 | #作答试卷得分大于过80的人的用户等级分布#
作答试卷得分大于过80的人的用户等级分布
https://www.nowcoder.com/practice/5bc77e3a3c374ad6a92798f0ead4c744
统计作答SQL类别的试卷得分大于过80的人的用户等级分布,按数量降序排序(保证数量都不同)
- 用户等级分布,可以看出最后的列是等级列和等级人数求和列,所以是按照等级分组,再求和
ui.level, count(er.uid) as level_cnt .... gruop by level
- 作答试卷为SQL,筛选条件是tag=sql,分数大于80分的人
where tag = 'SQL' and score >= 80
注意这里的tag和score字段来自不同的表,所以需要联合表查询
最后的count(er.uid)这里需要注意,因为可能出现sql试卷编号不同出现了同样的uid,题意要求是包含这样的uid,所以不去重,(更主要是我加上去重后实例没通过)
select ui.level, count(er.uid) as level_cnt from user_info ui join exam_record er on ui.uid = er.uid join examination_info ei on ei.exam_id = er.exam_id where ei.tag = 'SQL' and er.score > 80 group by ui.level order by level_cnt desc;