SQL 某学习期末考试,全校共8个班级,总计400人,考试科目为数学、语文、历史等10个科目,求各班级各科目前三的学生以及他们的考试成绩。
时间: 2024-03-26 20:40:37 浏览: 57
1.查询每门课程的【及格】学生数.sql
好的,这是一个关于 SQL 查询的问题。我们可以使用以下 SQL 语句来实现:
```
SELECT class, subject, name, score
FROM (
SELECT class, subject, name, score,
RANK() OVER (PARTITION BY class, subject ORDER BY score DESC) AS rank
FROM exam
) AS ranked
WHERE rank <= 3
ORDER BY class, subject, score DESC;
```
其中 `exam` 表表示考试成绩表,包含 `class`(班级)、`subject`(科目)、`name`(学生姓名)和 `score`(考试成绩)四个字段。
上述 SQL 查询语句中,我们首先使用子查询的方式,计算每个班级每个科目的学生考试成绩排名(使用 `RANK()` 函数),并将结果存储在一个名为 `ranked` 的临时表中。
接着,在外层查询中,我们筛选出每个班级每个科目前三名的学生(`rank <= 3`),并按照班级、科目和考试成绩降序排序(`ORDER BY class, subject, score DESC`)。最终,我们将班级、科目、学生姓名和考试成绩四个字段输出。
希望这个 SQL 查询语句能够解答你的问题!
阅读全文