列のあるテーブルがあります:
PlayerId
Points
最高の選手を100人獲得したいです(選手のポイントが多ければ多いほど良いです)。そのための質問は何でしょうか?
SQLServer2008を使用しています
列のあるテーブルがあります:
PlayerId
Points
最高の選手を100人獲得したいです(選手のポイントが多ければ多いほど良いです)。そのための質問は何でしょうか?
SQLServer2008を使用しています
SELECT TOP 100 PlayerId
FROM TableName
ORDER BY Points DESC
それを分解するには:
TOP 100
-返す上位100レコードを選択します。ORDER BY Points DESC
-結果をPoints
フィールドごとに並べ替え、数値を逆に設定します(整数データ型DESC
を想定)。Points
クエリから一番上のXを選択してから、ポイントの降順で並べ替える必要があります。
select top 100 * from players order by Points DESC
2人以上のプレーヤーが同じポイントを持っている場合はどうなりますか?さらに悪いことに、最大ポイントを持つ120人のプレーヤーがいる場合はどうなりますか?それらのプレーヤー全員を返すクエリを使用する必要があります。その場合は使用することをお勧めしますRANK
。
;WITH CTE AS
(
SELECT *, RANK() OVER(ORDER BY Points DESC) RN
FROM Players
)
SELECT *
FROM CTE
WHERE RN <= 100
SELECT TOP 100 PlayerID
FROM <<Table>>
ORDER BY Points DESC
Players
テーブル名が次のようになっていると仮定します。
SELECT TOP 100 PlayerId, Points
FROM Players
ORDER BY Points DESC
SELECT TOP 100 PlayerId FROM name_of_your_table ORDER BY Points DESC
SELECT TOP 100 *
FROM tblName ORDER BY Points DESC