2015-11-17 31 views
0

我需要讓學生獲得前5名GPA。有些記錄具有相同的GPA值,在這種情況下,他們需要計入相同的排名。MySQL查詢 - 需要列出排名,包括具體分類的副本

如果有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或任何簡單的東西。

回答

1
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 
+0

您還需要子查詢中的篩選器 – Rabbit

+0

您能解釋一下哪裏會發生什麼嗎?由於某些原因,查詢@vkp給出的只是帶回3條記錄,我知道還有更多。 – Nobody

+0

是的。否則,你會得到非大一新生,你最終可能沒有新生。 –