SQL24 统计每个用户的平均刷题数

复制代码
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:按 "题目难度等级" 对结果进行排序
相关推荐
秋95 分钟前
windows中安装redis
数据库·redis·缓存
Cosolar26 分钟前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
想唱rap33 分钟前
IO多路转接之poll
服务器·开发语言·数据库·c++
小江的记录本36 分钟前
【Java基础】泛型:泛型擦除、通配符、上下界限定(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·mysql·spring·面试·职场和发展
SeaTunnel41 分钟前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
凯瑟琳.奥古斯特1 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展
_ku_ku_2 小时前
数据库系统原理 · SQL 数据定义、更新及数据库编程 · 自学总结
数据库·oracle
Mortalbreeze2 小时前
深度理解文件系统 ---- 从磁盘存储到内核存储
大数据·linux·数据库
2301_803934612 小时前
MySQL 字段类型选择规范指南
jvm·数据库·python
oddsand13 小时前
Redis网络模型
java·数据库·redis