题解

  1. 首先是查看山东大学,因此我们在查询大学信息时,需要过滤掉其他的大学数剧。

  2. 查询学校、答题数和试题难度,则可以推断出是三张表联查,并且题中要求是参加了答题的学生数据,因此我们要使用inner join的方式。

  3. 要求查询的是不同的难度答题数,因此需要对难度进行分组,我们就需要考虑到使用group by对答题的难度进行分组。

  4. 要求查询平均答题数量。则使用答题总数/答题的人数。由于答题明细表中,存在用户重复答题,则需要对答题人数做一个排重,则使用distinct。

答案

SELECT 
a.university,c.difficult_level, 
COUNT(b.question_id) / COUNT(DISTINCT b.device_id) as avg_answer_cnt
FROM user_profile a 
INNER JOIN question_practice_detail as b on a.device_id = b.device_id
INNER JOIN question_detail as c ON b.question_id = c.question_id
WHERE a.university = '山东大学'
GROUP BY c.difficult_level