



思路:
①先看涉不涉及null,涉及的话注意外连接和条件,这里不涉及
②直接联立三个表,对t1、t2、t3之间建立联系之后筛选出大学
③对于怎么联立,大概正常来说由于t1.device_id对应着t2.device_id有多个,所以对t1、t2用right join ,再和t3用left join--但其实对于没有空的情况,inner join会产生笛卡尔积,与他们的效果一样
④按照难度进行分组
⑤最后使用之前讲过的sum+if函数统计正确率
SELECT t3.difficult_level as difficult_level,
sum(if(t2.result="right",1,0))/ COUNT(t2.result) as correct_rate
FROM user_profile t1
RIGHT JOIN question_practice_detail t2
ON (t2.device_id = t1.device_id)
LEFT JOIN question_detail t3
ON (t3.question_id = t2.question_id)
WHERE t1.university = "浙江大学"
GROUP BY t3.difficult_level

被折叠的 条评论
为什么被折叠?



