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:按 "题目难度等级" 对结果进行排序
相关推荐
ClouGence15 分钟前
开源数据库管理工具 CloudDM 新版本发布,支持 OpenSearch、IoTDB 数据源
数据库·开源
徐小黑ACG34 分钟前
Redis-基础
数据库·redis·缓存
火山引擎开发者社区1 小时前
案例实践 | 让 Agent 读懂业务口径:ContextSearch 在广告数据查询中的实践
数据库
10年前端老司机2 小时前
Milvus 8种检索能力实践
数据库·python·agent
aiks_yuan2 小时前
MySQL 深分页 LIMIT 越翻越慢怎么办:300 万行实测 OFFSET、延迟关联和 keyset 的耗时差距(MySQL 8.2)
mysql
Decay__2 小时前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
freejackman3 小时前
【实战三】撕开脱敏盲区:深度解析 CASE WHEN 与窗口函数血缘
大数据·数据库·sql
codigger5 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员
倔强的石头_5 小时前
集中式与分布式怎么选?我把手头11套系统重新过了一遍秤
数据库
挖掘狂人5 小时前
线上数据库连接池打满:从应急止损到架构根治的完整方案
数据库·sql·程序员