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

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

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

select
    qd.difficult_level,
    round(sum(case when qpd.result='right' then 1 else 0 end)/count(qpd.question_id),4) as correct_rate
from
    user_profile u
join
    question_practice_detail qpd
on
    u.device_id=qpd.device_id
join
    question_detail qd 
on
    qpd.question_id=qd.question_id
where 
    u.university='浙江大学'
group by
    qd.difficult_level
order by
    correct_rate ASC;
  1. 选择列:qd.difficult_level:选择question_detail表中的difficult_level(题目难度等级)列。round(sum(case when qpd.result='right' then 1 else 0 end)/count(qpd.question_id),4) as correct_rate:这部分计算并取四舍五入后的结果。首先,通过case when语句判断question_practice_detail表中的result列,如果值为right(正确),则返回 1,否则返回 0。然后使用sum函数对这些值求和,再除以question_practice_detail表中question_id的数量,得到正确率。最后使用round函数将结果保留四位小数,并将这个结果命名为correct_rate(正确率)。
  2. 表连接:from user_profile u join question_practice_detail qpd on u.device_id=qpd.device_id:将user_profile表(命名为u)和question_practice_detail表(命名为qpd)通过device_id列进行连接。join question_detail qd on qpd.question_id=qd.question_id:再将上述连接结果与question_detail表(命名为qd)通过question_id列进行连接。
  3. 筛选条件where u.university='浙江大学':只筛选出user_profile表中university(大学)列为浙江大学的数据。
  4. 分组group by qd.difficult_level:按照question_detail表中的difficult_level(题目难度等级)进行分组。
  5. 排序order by correct_rate ASC:按照计算出的correct_rate(正确率)以升序排列结果。
全部评论

相关推荐

点赞 评论 收藏
分享
头像
07-24 13:05
已编辑
西南大学 Java
点赞 评论 收藏
分享
昨天 16:08
门头沟学院 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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