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

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

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

解题思路:
1.确立这三个表哪个表为主表,因为是统计浙江大学用户的不同难度答题正确率,所以user_profile可当做主表,但是user_profile的字段与最终结果无关,question_practice_detail好像也不可单独做主表,所以我这边把以question_practice_detail内连接user_profile的查询结果为question_id与result的子查询作为主表,先筛选出来所有浙江大学的question_idresult
2.然后再用这个子查询和question_detail表左连接做最终结果的查询,重点是如何表示答题的正确率情况,正确率可以通过子查询的答题正确数除答题总数,正确数通过sum嵌套if函数得出,if函数先判断他是否正确正确则记为1,统计1的个数,然后统计子查询的答题总量,从而得出正确率。
3.最后根据difficult_level分组再根据correct_rate排序。

select
  Q3.difficult_level,
  sum(if(Q2.result = 'right', 1, 0)) / count(Q2.question_id) as correct_rate
from
  (
    select
      Q1.question_id,
      Q1.result
    from
      question_practice_detail as Q1
      inner join user_profile as U on Q1.device_id = U.device_id
    where
      U.university = '浙江大学'
  ) as Q2
  left outer join question_detail as Q3 on Q2.question_id = Q3.question_id
group by
  Q3.difficult_level
order by
  correct_rate;
全部评论

相关推荐

写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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