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

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

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 日本

相关推荐

10-07 20:48
门头沟学院 Java
听说改名就会有offer:可能是实习上着班想到后面还要回学校给导师做牛马,看着身边都是21-25的年纪,突然emo了了
点赞 评论 收藏
分享
10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
11-02 08:15
已编辑
门头沟学院 Java
美团 Java后端开发 10w刀 美硕
YamadaAnna:包留美的,你拿的美团 招银,没一个不加班的。考虑一下未来吧,应届生的工资真不重要,10w刀税后6w,省省还是能活下去的。回国了35岁怎么办,难道35岁还能返美么,就算35岁还能在国内找到工作,难道打算一辈子9点10点下班么。你有能力在美利坚找到工作,回国如果不是哪个965大厂给你发个ssp,真不值得。 等抽不中h1b,没办法了再回国吧。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务