MYSQL 分组取各科成绩前3名的sql
时间: 2024-02-18 13:09:51 浏览: 132
sql查询出各科成绩最好的学生信息
可以使用窗口函数(Window Function)来实现这个功能,具体的 SQL 语句如下:
```
SELECT subject, student_name, score
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY subject ORDER BY score DESC) AS rank
FROM scores
) AS T
WHERE rank <= 3
```
其中,`scores` 表是存储学生各科成绩的表,包含三个字段:`subject`(科目)、`student_name`(学生姓名)和 `score`(成绩)。
上面的 SQL 语句中,内部查询使用了窗口函数 `ROW_NUMBER()`,对每个科目的成绩按照降序排列,然后为每个成绩分配一个排名(即 `rank` 字段)。最外层查询则按照 `rank` 字段过滤出每个科目的前三名学生成绩,并返回科目、学生姓名和成绩这三个字段。
阅读全文