2013-08-19 65 views
0

我有一個student表(sidsname),一個療程tablecidcname)和sc表(sidcidscore)。如何實現得分排名

如何按照總分排列學生信息和總分,如果總分相同,則按cid排序。

我當前的SQL如下:

SELECT s.Sname,ISNULL(SUM(ss.Score),0) 
FROM Student s 
LEFT JOIN SC ss 
    ON s.Sid=ss.Sid 
GROUP BY s.Sname 
ORDER BY SUM(ss.Score) DESC 
+2

您對已有的查詢有任何疑問嗎? –

+0

當前查詢給出錯誤...在調用本機函數'ISNULL'時錯誤的參數計數... –

回答

3

如果我理解正確的話,你可以在你的查詢中使用rank。請嘗試以下操作:

SELECT rank() OVER (ORDER BY SUM(ss.Score) DESC) as rank, s.Sname, ISNULL(SUM(ss.Score),0) 
FROM Student s LEFT JOIN SC ss 
ON s.Sid = ss.Sid 
GROUP BY s.Sname 
ORDER BY SUM(ss.Score) DESC 

請參閱working demo on SQL Fiddle