解题思路:要计算不同学校、不同难度的用户平均答题量

可针对学校University、difficult_level进行分类 group by university,difficult_level

观察有用信息:

user_profile和question_practice_detail中device_id关联 question_practice_detail和question_detail中question_id关联

由于计算不同用户平均答题量来自question_practice_detail,因此要在联结时保全该表,以此联结其他表:

结果要保存四位小数,故用到round()函数;

解决本道题有两种做法:

方法一:使用联结的方法:

select university, qd.difficult_level,
round(count(qpd.question_id)/count(distinct qpd.device_id),4) as avg_answer_cnt
from question_practice_detail as qpd 
inner join user_profile as up on up.device_id = qpd.device_id
inner join question_detail as qd on qpd.question_id = qd.question_id
group by university,difficult_level;

方法二:使用WHERE语句

SELECT u.university,d.difficult_level,COUNT(q.question_id)/COUNT(DISTINCT(q.device_id)) as avg_answer_cnt
FROM user_profile AS up,question_practice_detail AS qpd,question_detail AS pd
WHERE up.device_id = qpd.device_id 
and qpd.question_id = pd.question_id
GROUP BY university,difficult_level;