解题思路:

写一下这种题的本质 看似是查询三个表,其实是查询一个表,只需要把表通过key进行连接即可

题目分析:

山东大学的用户在不同难度下的平均答题题目数

限制条件:

  1. 山东大学(where university="山东大学")
  2. 不同难度(group by question_level)

联表操作

联表分为内联,外联和交叉联主要使用内联方式形式为:

inner join 表名 as 别名
on (+条件)表名1.key=表名2.key

计算平均答题题目数

要使用distinct关键字去掉相同的id(题目数量)/((distinct)device_id数量)

# 山东大学
# 不同难度
# 平均答题题目数(题目数量/用户数量)
# 表名                       别名            key
# user_profile               up             device_id,  answer_cnt
# question_practice_detail   qpd            device_id,question_id
# question_detail            qd             question_id question_level


select university,difficult_level,
COUNT(answer_cnt)/count(distinct qpd.device_id) as avg_answer_cnt
from question_practice_detail as qpd
#加入表user_profile
left join user_profile as up
on qpd.device_id=up.device_id
#加入表question_detail
left join question_detail as qd
on qpd.question_id=qd.question_id

where university="山东大学"
group by difficult_level