MySQL 5.6 获取每个班级得分最高的前三名学生 - 优化方案
要取每个班级得分最高的前三名学生,可以使用以下 MySQL 查询语句:
SELECT class, student, score
FROM (
SELECT class, student, score,
ROW_NUMBER() OVER (PARTITION BY class ORDER BY score DESC) AS rank
FROM students
) AS ranked
WHERE rank <= 3;
这个查询语句使用了子查询和窗口函数。子查询将学生表按班级分组,并按照得分降序排列,然后使用窗口函数 ROW_NUMBER() 为每个学生计算排名。最后,外部查询选择排名小于等于 3 的学生,即每个班级得分最高的前三名学生。
假设学生表的结构如下:
CREATE TABLE students (
id INT PRIMARY KEY,
student VARCHAR(50),
class INT,
score INT
);
你需要将上述查询语句中的 "students" 替换为你实际的学生表名。
原文地址: https://www.cveoy.top/t/topic/pn3S 著作权归作者所有。请勿转载和采集!