SQL23 统计每个学校各难度的用户平均刷题数
题目:运营想要计算一些参加了答题的不同学校、不同难度的用户平均答题量,请你写SQL取出相应数据
一共三张表
①用户信息表:user_profile
第一行表示:id为1的用户的常用信息为使用的设备id为2138,性别为男,年龄21岁,北京大学,gpa为3.4,在过去的30天里面活跃了7天,发帖数量为2,回答数量为12
②题库练习明细表:question_practice_detail
第一行表示:id为1的用户的常用信息为使用的设备id为2138,在question_id为111的题目上,回答错误
③表:question_detail
第一行表示: 题目id为111的难度为hard
分析:
①不同学校、不同难度→group by 分组
②用户平均答题量需要计算→题目数量/用户数 注:用户数需要去重,有的用户答了多道题
代码:
select
u.university,
q_d.difficult_level,
count(q_p.question_id) / count(distinct (q_p.device_id)) avg_answer_cnt
from question_practice_detail q_p
join user_profile u
on q_p.device_id=u.device_id
join question_detail q_d
on q_p.question_id=q_d.question_id
group by
u.university,
q_d.difficult_level
典型三段式SQL写法:
第一步:select选择字段,含原生字段和构造字段
其中,构造过程常用sum、count、round、+-*等
第二步:from选择表格,含合并表格操作
第三步:数据操作段,含分组/排序/筛选/选取指定行数等操作