mysql按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
封面图
•
2025-11-21
•
MySQL
252
0
0
0
要在 MySQL 中按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩,你需要使用 `JOIN`、`GROUP BY` 和 `ORDER BY` 等 SQL 语句来实现。假设你有以下两张表: ### 表结构示例: 1. **students**(学生表) - `student_id`(学生ID) - `student_name`(学生姓名) 2. **scores**(成绩表) - `student_id`(学生ID) - `course_id`(课程ID) - `score`(分数) --- ### 查询语句如下: ```sql SELECT s.student_id, s.student_name, sc.course_id, sc.score, AVG(sc.score) OVER (PARTITION BY sc.student_id) AS avg_score FROM students s JOIN scores sc ON s.student_id = sc.student_id ORDER BY avg_score DESC; ``` --- ### 说明: - `AVG(sc.score) OVER (PARTITION BY sc.student_id)`:这是窗口函数,用来计算每个学生的平均成绩。 - `ORDER BY avg_score DESC`:按平均成绩从高到低排序。 --- ### 如果你只需要每个学生的平均成绩,不显示每门课的分数: ```sql SELECT s.student_id, s.student_name, AVG(sc.score) AS avg_score FROM students s JOIN scores sc ON s.student_id = sc.student_id GROUP BY s.student_id, s.student_name ORDER BY avg_score DESC; ``` --- 如果你能提供具体的表结构和字段名,我可以帮你定制更精确的 SQL 语句。
上一篇:
mysql检索01课程分数小于60,按分数降序排列的学生信息
下一篇:
mysql查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
标题录入,一次不能超过6条
留言
评论