MySQL 查询:按2017年平均成绩降序列出所有学生姓名及均分

张开发
2026/4/15 23:19:39 15 分钟阅读

分享文章

MySQL 查询:按2017年平均成绩降序列出所有学生姓名及均分
本文详解如何在 mysql 中正确联结学生表与成绩表筛选2017年数据并分组计算每位学生的平均成绩最终按均分从高到低排序输出完整学生名单。 本文详解如何在 mysql 中正确联结学生表与成绩表筛选2017年数据并分组计算每位学生的平均成绩最终按均分从高到低排序输出完整学生名单。在初学 SQL 时一个常见误区是误用聚合函数如 AVG()而忽略分组逻辑和表间关联条件。您当前的查询仅返回单条记录根本原因在于 缺少 students 与 register 表之间的显式关联即未通过 idstu 和 ids 建立连接 未使用 GROUP BY 对每位学生进行分组导致 AVG(grade) 将全表符合条件的成绩统一计算为一个全局均值而非每人一均值 隐式笛卡尔积旧式逗号连接未加 ON 条件可能引发数据膨胀或逻辑错误。? 正确做法是 使用 INNER JOIN 显式关联两表 用 WHERE YEAR(data_ora) 2017 精准过滤年份 按学生唯一标识如 students.ids分组确保 AVG() 作用于每个学生的成绩子集 最后用 ORDER BY ... DESC 实现降序排列。以下是规范、可执行的 SQL 语句SELECT s.name, s.surname, ROUND(AVG(r.grade), 2) AS averageFROM students sINNER JOIN register r ON s.ids r.idstuWHERE YEAR(r.data_ora) 2017GROUP BY s.ids, s.name, s.surnameORDER BY average DESC;? 关键说明与优化建议 Tellers AI Tellers是一款自动视频编辑工具可以将文本、文章或故事转换为视频。

更多文章