Reputation: 1063
select
DENSE_RANK() over (order by score desc) as Rank ,
username ,
score
from users
I tried above query and result was as below :
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
2 C 3000
2 D 3000
2 E 3000
3 F 2000
whereas my required result is :
Rank Username score
----- -------- -----
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000
how should i edit my query to get my required result?
Upvotes: 1
Views: 168
Reputation: 13237
Use Rank()
instead of Dense_Rank()
will solve your problem.
SELECT
RANK() OVER (ORDER BY Score DESC) AS [Rank],
Username,
Score
FROM Users
Working execution with the given sample data:
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
So the output will be:
Rank UserName Score
---- -------- ------
1 A 3500
1 B 3500
3 C 3000
3 D 3000
3 E 3000
6 F 2000
Upvotes: 1