我需要让学生获得GPA前5名。有些记录具有相同的GPA值,在这种情况下,它们需要计算相同的排名。
如果有10个学生,那么3个具有相同的GPA,我需要按最高GPA的顺序返回7条记录。
最后,我只需要带回新生的记录。
这是我尝试过的:
Select s.StudentID, s.GPA, s.Classification
From Student s
Join (Select distinct GPA from Student Order By GPA desc limit 5) b on a.GPA = b.GPA")
这将为所有学生带来前5条记录。我需要帮助,以查找在哪里添加
Where Classification = 'Freshman'
。是我所需要的where子句,还是有更好的方法呢?
这是在MySQL中完成的,因此我不能使用DenseRank或其他任何简单的方法。
最佳答案
Select s.StudentID, s.GPA, s.Classification
From Student s
Join (Select distinct GPA from Student
where Classification = 'Freshman'
Order By GPA desc limit 5) b
on s.GPA = b.GPA
where s.Classification = 'Freshman'
order by s.GPA desc
关于mysql - MySQL查询-需要列出排名,包括针对特定分类的重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33769103/