题解 | #浙大不同难度题目的正确率#

https://www.nowcoder.com/practice/d8a4f7b1ded04948b5435a45f03ead8c

私以为此题考点主要在于如何理解SQL的执行顺序:FROM,JOIN,WHERE,GROUP BY,HAVING,聚合函数,SELECT,ORDER BY的按先后顺序执行。
1、完整SQL如下。
SELECT
  qd.difficult_level,
  SUM(IF(qpd.result='right',1,0))/COUNT(qpd.id) AS correct_rate
FROM question_practice_detail qpd
  LEFT JOIN question_detail qd
    ON qpd.question_id = qd.question_id
WHERE qpd.device_id IN(     SELECT
               up.device_id
        FROM user_profile up
        WHERE up.university = '浙江大学')
GROUP BY qd.difficult_level
ORDER BY correct_rate; 

2、通过问题编号关联答题记录和问题表,找出问题的难度等级
SELECT * FROM question_practice_detail qpd  LEFT JOIN question_detail qd ON qpd.question_id = qd.question_id;

3、通过设备号筛选出“浙江大学”的答题详情
SELECT
  *
FROM question_practice_detail qpd
  LEFT JOIN question_detail qd
    ON qpd.question_id = qd.question_id
WHERE qpd.device_id IN(
	SELECT
                         up.device_id
                       FROM user_profile up
                       WHERE up.university = '浙江大学');

4、根据问题难度聚合数据,并根据聚合数据计算结果。同时,注意下排序问题。
SELECT
  qd.difficult_level,
  SUM(IF(qpd.result='right',1,0))/COUNT(qpd.id) AS correct_rate
FROM question_practice_detail qpd
  LEFT JOIN question_detail qd
    ON qpd.question_id = qd.question_id
WHERE qpd.device_id IN(
	SELECT
                         up.device_id
                       FROM user_profile up
                       WHERE up.university = '浙江大学')
GROUP BY qd.difficult_level
ORDER BY correct_rate;


全部评论

相关推荐

一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务