こんにちは、スコアを使用して、コンテストのトップ 10 勝者を取得しようとしています。問題は、同じスコアを持つ 2 人のユーザーがいる場合です。たとえば、上位 9 件のみが有効です (たとえば、上位 3 件のスコアが 2 つあり、残りが一意である場合、11 件のレコードが返されるはずです)...
これに取り組む方法がわからないので、いくつかのガイダンスをいただければ幸いです。
前もって感謝します、
イアン
こんにちは、スコアを使用して、コンテストのトップ 10 勝者を取得しようとしています。問題は、同じスコアを持つ 2 人のユーザーがいる場合です。たとえば、上位 9 件のみが有効です (たとえば、上位 3 件のスコアが 2 つあり、残りが一意である場合、11 件のレコードが返されるはずです)...
これに取り組む方法がわからないので、いくつかのガイダンスをいただければ幸いです。
前もって感謝します、
イアン
上位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
あなたはこのようにしたい:
SELECT TOP(10) WITH TIES
FirstName, LastName, score
FROM winners
ORDER BY score;
詳細については、TOP (Transact-SQL)を参照してください。
top 構文は同点を許可します
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
あなたはそれを試しましたか?