如果我想得到這樣一個結果集:分組排序,並且每組限定記錄集的數量,用一條SQL語句能辦到嗎? 比如說,我想找出學生期末考試中,每科的前3名,並按成績排序,只用一條SQL語句,該怎麼寫? 表[TScore]的結構 code 學號 char subject 科目 int score 成績 int 可以這樣 ...
如果我想得到這樣一個結果集:分組排序,並且每組限定記錄集的數量,用一條SQL語句能辦到嗎?
比如說,我想找出學生期末考試中,每科的前3名,並按成績排序,只用一條SQL語句,該怎麼寫?
表[TScore]的結構
code 學號 char
subject 科目 int
score 成績 int
可以這樣寫:
SELECT [code]
,[subject]
,[score]
FROM (
SELECT *
,RANK() OVER(PARTITION BY subject ORDER BY score DESC) AS Row
FROM TScore
) AS a
WHERE Row <= 3 ;
引用自:http://blog.csdn.net/leftfist/article/details/6203254