如果我想得到这样一个结果集:分组,并且每组限定记录集的数量,用一条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 ;