我需要让学生获得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/

10-10 23:52