問題:
行の値が同じであっても、行に連続してランキング位置を追加したい。
例:
私たちのデータベースには、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です。