【场景】:不同条件下的情况 【分类】:分组查询、select if

分析思路

难点:

1.不同难度可以理解为每个难度

浙大每个难度题目下的正确率

  • [使用]: count(if(result = 'right', 1, null))group by difficult_level

求解代码

方法一: from 表连接

select
    difficult_level,
    count(if(result = 'right', 1, null))/count(a.device_id) as correct_rate
from user_profile a, question_practice_detail b, question_detail c
where a.device_id = b.device_id
and b.question_id = c.question_id
and university = '浙江大学'
group by difficult_level
order by correct_rate

方法二:

join 表连接

select
    difficult_level,
    count(if(result = 'right', 1, null))/count(a.device_id) as correct_rate
from user_profile a
join question_practice_detail b using(device_id)
join question_detail c using(question_id)
where university = '浙江大学'
group by difficult_level
order by correct_rate