如何使用dense_rank()实现真实排名
How to use dense_rank() to achieve real ranking
select
DENSE_RANK() over (order by score desc) as Rank ,
username ,
score
from users
我尝试了上面的查询,结果如下:
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
2 C 3000
2 D 3000
2 E 3000
3 F 2000
而我要求的结果是:
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000
我应该如何编辑我的查询以获得我需要的结果?
使用Rank()
instead of Dense_Rank()
会解决你的问题。
SELECT
RANK() OVER (ORDER BY Score DESC) AS [Rank],
Username,
Score
FROM Users
使用给定示例数据的工作执行:
DECLARE @Users TABLE (Username VARCHAR (2), Score INT)
INSERT INTO @Users (Username, Score)
VALUES
('A', 3500),
('B', 3500),
('C', 3000),
('D', 3000),
('E', 3000),
('F', 2000)
SELECT
RANK() OVER (ORDER BY Score DESC) AS [Rank],
Username,
Score
FROM @Users
所以输出将是:
Rank UserName Score
---- -------- ------
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000
select
DENSE_RANK() over (order by score desc) as Rank ,
username ,
score
from users
我尝试了上面的查询,结果如下:
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
2 C 3000
2 D 3000
2 E 3000
3 F 2000
而我要求的结果是:
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000
我应该如何编辑我的查询以获得我需要的结果?
使用Rank()
instead of Dense_Rank()
会解决你的问题。
SELECT
RANK() OVER (ORDER BY Score DESC) AS [Rank],
Username,
Score
FROM Users
使用给定示例数据的工作执行:
DECLARE @Users TABLE (Username VARCHAR (2), Score INT)
INSERT INTO @Users (Username, Score)
VALUES
('A', 3500),
('B', 3500),
('C', 3000),
('D', 3000),
('E', 3000),
('F', 2000)
SELECT
RANK() OVER (ORDER BY Score DESC) AS [Rank],
Username,
Score
FROM @Users
所以输出将是:
Rank UserName Score
---- -------- ------
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000