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:按 "题目难度等级" 对结果进行排序
相关推荐
瀚高PG实验室几秒前
ERROR: invalid input syntax for type integer: “a“
数据库·瀚高数据库
S1998_1997111609•X1 分钟前
论next/js在打击省份及犯罪行为集团的系统分析[特殊字符]设计
网络·数据库·百度·ssh·开闭原则
dfdfadffa6 分钟前
如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
jvm·数据库·python
Irene19918 分钟前
Oracle 中:为什么 from 子查询后面需要一个别名
数据库·oracle
m0_624578599 分钟前
SQL分组后如何计算移动平均值_利用窗口函数AVG配合ROWS
jvm·数据库·python
2401_8242226916 分钟前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
地球资源数据云21 分钟前
1900-2023年中国物种分布点位矢量数据集
大数据·数据结构·数据库·数据仓库·人工智能
tang&37 分钟前
【MySQL】索引创建与B+树原理:MySQL性能优化的核心一课
b树·mysql·性能优化
sitellla44 分钟前
MySQL 入门:最流行的开源关系型数据库介绍
数据库·mysql·其他·开源
精益数智工坊1 小时前
拆解制造业仓库物料管理流程:如何通过标准化仓库物料管理流程解决账实不符难题
大数据·前端·数据库·人工智能·精益工程