题解 | #作答试卷得分大于过80的人的用户等级分布#
作答试卷得分大于过80的人的用户等级分布
http://www.nowcoder.com/practice/5bc77e3a3c374ad6a92798f0ead4c744
明确题意:
统计作答SQL类别的试卷得分大于过80的人的用户等级分布,按数量降序排序,示例数据结果输出如下:
问题拆解:
- 本题主要是考察知识点:join、group by、distinct等
- 先卡条件score > 80 和 SQL 的 考试记录,并且去重uid,得到t1
- t1需要与t2关联,得到level字段,group by level,分组统计和聚合
代码实现:
SELECT t2.level, COUNT(t1.uid) AS level_cnt FROM ( SELECT DISTINCT uid -- 注意 distinct FROM exam_record WHERE score > 80 -- 先卡条件 AND exam_id IN ( SELECT exam_id FROM examination_info WHERE tag = 'SQL' ) ) t1 JOIN user_info t2 ON t1.uid = t2.uid GROUP BY t2.level -- 分组 ORDER BY level_cnt DESC;
不足之处,欢迎指正