問題:
行の値が同じであっても、行に連続してランキング位置を追加したい。
例:
私たちのデータベースには、competition
次の列にデータがあります:id
(主キー)、first_name
、last_name
、およびscore
。
id | first_name | last_name | スコア |
11 | ジョン | トーマス | 345 |
14 | メアリー | ジョンソン | 222 |
16 | リサ | ブラウン | 154 |
23 | アラン | ブレイク | 222 |
32 | クリス | テイラー | 154 |
生徒に関するすべての詳細を表示しましょう。名前、名、スコアをscore
で並べ替えて表示します。 降順で。複数の生徒のスコアが同じ場合は、ポジション番号をスキップしたくありません。
ソリューション1:
SELECT DENSE_RANK() OVER(ORDER BY score DESC) AS d_rank, first_name, last_name, score FROM competition;
ランクの範囲が1から3であることに注意してください。
ディスカッション:
DENSE_RANK
を使用する 同じランクの行の後のランキング位置をスキップしたくない場合。この例では、メアリーとアランのランクは2ですが、リサの位置は3です。