0

こんにちは、スコアを使用して、コンテストのトップ 10 勝者を取得しようとしています。問題は、同じスコアを持つ 2 人のユーザーがいる場合です。たとえば、上位 9 件のみが有効です (たとえば、上位 3 件のスコアが 2 つあり、残りが一意である場合、11 件のレコードが返されるはずです)...

これに取り組む方法がわからないので、いくつかのガイダンスをいただければ幸いです。

前もって感謝します、

イアン

4

3 に答える 3

3

上位3つのスコアが2つある場合は、11のレコードが返されます。

使いたいようですねdense_rank

これにより、上位10スコアに含まれるすべての行が表示されます。

select T.Score
from (
       select Score,
              dense_rank() over(order by Score) as rn
       from YourTable
     ) T
where T.rn <= 10

SE-データ

于 2012-06-07T11:14:47.890 に答える
1

あなたはこのようにしたい:

SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;

詳細については、TOP (Transact-SQL)を参照してください。

于 2012-06-07T11:06:32.197 に答える
0

top 構文は同点を許可します

[ 
    TOP (expression) [PERCENT]
    [ WITH TIES ]
]

あなたはそれを試しましたか?

http://msdn.microsoft.com/en-us/library/ms189463.aspx

于 2012-06-07T10:59:44.067 に答える