题解 | #作答试卷得分大于过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;
不足之处,欢迎指正

全部评论

相关推荐

独玖:同二本,建议咱俩一起重开
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务