2016-05-22 2 views
1
select 
    DENSE_RANK() over (order by score desc) as Rank , 
    username , 
    score 
from users 

ランキングリアル達成するためにDENSE_RANK()を使用する方法:私は、クエリの上にしようとした結果は以下の通りだった

私の必要な結果に対し
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 

私の質問は私の必要な結果を得るために?

+4

利用代わりに 'DENSE_RANK'の' RANK'。 –

+0

ありがとうございました。それは私の問題を解決した – Behnam

+0

@ベナンあなたはanwerと同じものを投稿し、それを受け入れることができます。 – Arulkumar

答えて

1

Dense_Rank()の代わりに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 
関連する問題