我正在使用SQL Server 2008.我有一個Student表,其中有以下字段: 1. StudentId,2. StudentName,3.標記。 我想得到一個結果集,其中應該有一個名爲「位置」的列。就像「選擇StudentId,StudentName,Marks,作爲學生的位置...」一樣,根據學生得分的分數,我可以評估他們的第一,第二或第二十位。如果學生有相同的分數,那麼他們有相同的位置。 謝謝。 里斯SQL Server:基於標記的位置
3
A
回答
7
使用RANK:
如果兩個或更多的行並列的等級,每個並列排接收相同的等級。例如,如果兩位頂級銷售人員具有相同的SalesYTD值,則他們都排名第一。 SalesYTD次高的銷售人員排名第三,因爲有兩排排名較高。因此,RANK函數並不總是返回連續的整數。
查詢看起來是這樣的:
SELECT
StudentId,
StudentName,
Marks,
RANK() OVER (ORDER BY Marks DESC) AS Position
FROM Student
1
您可以使用子查詢來計算位置。位置簡直比學生具有較高的標記數量多一個:
select
s.StudentId, s.StudentName, s.Marks,
Position = 1 + (select count(*) from Students m where m.Marks > s.Marks)
from
Students s
+0
感謝您的簡單快速回答。它已經爲我做了。我也意識到由Mark Byers建議的DENSE_RANK()函數也可以做到這一點。 :-) – Rhys 2010-05-06 05:53:08
相關問題
- 1. 基於標記設置UIImage
- 2. 基於sql server中索引位置的字符串提取
- 3. 基於呼叫位置的記憶
- 4. 如何基於SQL Server中一些數量選擇位置
- 5. 基於標記和地理位置的Instagram提要
- 6. SQL Server 2012基於下一條記錄的更新記錄
- 7. 基於鼠標位置的DataGrid行AllowDrop
- 8. 基於地理位置填充Google Maps for Rails標記
- 9. 位置標記
- 10. 基於SQL Server行分組
- 11. 如何基於在SQL Server
- 12. 基於其在SQL Server
- 13. 重建基於在SQL Server
- 14. 基於鼠標位置縮放對象
- 15. AutoCompleteTextView基於位置
- 16. Sql Server的骨料串連CLR返回基於的記錄
- 17. 基於div的火標記
- 18. 在SQL Server中插入基於最近日期的記錄
- 19. 如何提取基於entrydate sql server的最後記錄
- 20. SQL PHP的記錄位置
- 21. TimeZone的基於位置
- 22. 基於位置的消息
- 23. 基於位置的搜索
- 24. 基於位置的信息
- 25. 基於位置的AR
- 26. SQL Server約束(基於外鍵的限制位字段)
- 27. web.config位置標記
- 28. SQL Server 2008 sysobjects位置
- 29. 基於鄰居標籤設置標籤位置
- 30. SQL Server的基於網格的編輯
下面是排名功能的MSDN文檔:http://msdn.microsoft.com/en-us/library/ms189798.aspx – David 2010-05-05 19:44:12
+1完美,我在想ROW_NUMBER(),但RANK()完全處理重複標記 – 2010-05-05 19:45:18