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

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

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

A
SELECT
c.difficult_level,
ROUND(sum(case when b.result = 'right' then 1 else 0 end)/count(b.question_id),4) AS correct_rate
FROM
question_practice_detail as b
LEFT JOIN user_profile AS a ON a.device_id = b.device_id
LEFT JOIN question_detail AS c ON b.question_id = c.question_id
where a.university = '浙江大学'
GROUP BY difficult_level
ORDER BY correct_rate 

B
SELECT
c.difficult_level,
ROUND(sum(case when b.result = 'right' then 1 else 0 end)/count(b.question_id),4) AS correct_rate
FROM
user_profile as a
LEFT JOIN question_practice_detail AS b ON a.device_id = b.device_id
LEFT JOIN question_detail AS c ON b.question_id = c.question_id
where a.university = '浙江大学'
GROUP BY difficult_level
ORDER BY correct_rate

A和B的区别:
这两个 SQL 查询的区别在于它们的表连接顺序不同。

第一个查询首先连接了 question_practice_detail 表和 user_profile 表,然后再连接 question_detail 表。由于这个连接顺序,最终结果中可能会包含一些 question_practice_detail 表中没有对应 question_detail 表记录的难度等级,因为在这个连接顺序下,question_practice_detail 表中的所有记录都会参与计算,而 question_detail 表中没有对应记录的难度等级将被排除在外。

第二个查询则先连接了 user_profile 表和 question_practice_detail 表,然后再连接 question_detail 表。由于这个连接顺序,最终结果中不会包含 question_practice_detail 表中没有对应 question_detail 表记录的难度等级,因为在这个连接顺序下,只有 question_practice_detail 表中存在对应 question_detail 表的记录才会被计算。

总的来说,这两个查询的结果可能略有不同,因为它们的表连接顺序不同。具体选择哪个查询取决于具体的需求和场景。如果需要计算所有难度等级的正确率,无论是否有对应的题目详细信息,那么第一个查询可能更为合适;如果只需要计算有题目详细信息的难度等级的正确率,那么第二个查询可能更为合适。

全部评论
首席看结果,结果的首列 为原始表阿,后面的用left join b等
点赞 回复 分享
发布于 2023-07-31 22:28 日本

相关推荐

字节一直是我的白月光,考虑到转正还是拒了日常实习。
从明天开始狠狠卷JV...:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客96559368...:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务