

select
u.university,qd.difficult_level,
round(count(qpd.question_id)/count(distinct qpd.device_id),4) avg_answer_cnt
from
user_profile u
join
question_practice_detail qpd
on
u.device_id=qpd.device_id
join
question_detail qd
on
qpd.question_id=qd.question_id
where
u.university='山东大学'
group by
u.university,qd.difficult_level
order by
qd.difficult_level;
SELECT 子句
select
u.university,
qd.difficult_level,
round(count(qpd.question_id)/count(distinct qpd.device_id),4) avg_answer_cnt
u.university:输出学校名称(此处固定为山东大学)qd.difficult_level:输出题目难度等级round(...,4):计算并四舍五入到小数点后 4 位count(qpd.question_id):统计所有被回答的题目总数count(distinct qpd.device_id):统计参与答题的不同设备(学生)数量avg_answer_cnt:最终得到的 "平均每人答题数" 列名
FROM 与 JOIN 子句
from user_profile u
join question_practice_detail qpd
on u.device_id=qpd.device_id
join question_detail qd
on qpd.question_id=qd.question_id
- 这是一个三表关联查询:
user_profile u:用户信息表(设备 ID、学校等)question_practice_detail qpd:答题记录表(设备 ID、题目 ID 等)question_detail qd:题目信息表(题目 ID、难度等级等)
- 通过
device_id关联用户与答题记录,通过question_id关联答题记录与题目详情。
WHERE 子句
where u.university='山东大学'
- 筛选条件:只统计山东大学的用户数据。
GROUP BY & ORDER BY
group by u.university,qd.difficult_level
order by qd.difficult_level
GROUP BY:按 "学校" 和 "题目难度等级" 进行分组统计ORDER BY:按 "题目难度等级" 对结果进行排序