我需要一些帮助,我正在开展一个学校项目并按照学校规范对学生进行排名。例如,在10名学生中,每个学生的分数分别为80,70,70,60,60,50,40,30,30,20
。在SQL Server中使用Rank
获取每个学生的排名时,它将输出此
Score Rank
------------
80 1
70 2
70 3
60 4
60 5
50 6
40 7
30 8
30 9
20 10
我想要的是具有相同分数的学生具有相同的排名。看起来应该是这样的
Score Rank
------------
80 1
70 2
70 2
60 4
60 5
50 6
30 7
30 7
30 7
20 10
我正在使用vb.net 2013和Sql server 2012,并且我将数据库中的数据显示到DataGridView。
答案 0 :(得分:0)
DECLARE @Table TABLE(
ContenderNum INT,
totals FLOAT
)
INSERT INTO @Table SELECT 1, 196
INSERT INTO @Table SELECT 2, 181
INSERT INTO @Table SELECT 3, 192
INSERT INTO @Table SELECT 4, 181
INSERT INTO @Table SELECT 5, 179
SELECT contendernum,totals,
RANK() OVER (ORDER BY totals DESC) AS xRank,
DENSE_RANK() OVER (ORDER BY totals DESC) AS xRank
FROM
(
SELECT ContenderNum ,totals
FROM @Table
) AS a
ORDER BY 1
它解决了,我使用的是SQL Row_Number
。