题意:

计算每个学校用户不同难度下的用户平均答题题目数情况


分解:

  • 根据每个学校的用户,知 group by university
  • 根据不同难度,知 group by difficult_level
  • 根据用户平均答题题目数,知 count(q.question_id) / count(distinct(q.device_id))
  • 共涉及到三张表 user_profile u,question_practice_detail q,question_detail qd
    给表取别名,可以用: 表名 as 别名 或者 表名 别名
    其中 u q 可通过 device_id 关联查询
    q qd 可通过 question_id 关联查询

代码实现

一:

select u.university,qd.difficult_level,count(q.question_id)/count(distinct(q.device_id)) as avg_answer_cnt
FROM user_profile u,question_practice_detail q,question_detail qd
where u.device_id=q.device_id and q.question_id=qd.question_id
GROUP by u.university,qd.difficult_level

二:

select u.university,qd.difficult_level,count(q.question_id)/count(distinct(q.device_id)) as avg_answer_cnt
from user_profile u   #第一张表
join question_practice_detail q  #第二张表
on u.device_id=q.device_id  #查询条件
join question_detail qd  #第三张表
on q.question_id=qd.question_id   #查询条件
GROUP by u.university,qd.difficult_level  #分组