【SQL】ソートした結果に連番を振るROW_NUMBER関数について初心者にもわかるように解説してみた。
  • facebookページ
  • twitterページ
  • 2020.08.02

    【SQL】ソートした結果に連番を振るROW_NUMBER関数について初心者にもわかるように解説してみた。

    データベーステーブルに連番で数字を付けたいと思うケースは多々あります。

    例えばソートをした場合など、通しで連番がついていないケースでは非常に扱い難いデータとなる可能性も。

    そんな時に連番を振れるクエリがあれば便利ですよね?

    そこで今回は「連番」に的を絞って記事にしていきたいと思います。

    これをマスターすればいちいちデータ全体を見直す必要がなくなるので是非とも覚えましょう!

    連番を振る

    SQLには「ROW_NUMBER」という関数が存在します。

    このROW_NUMBER関数はSELECTした結果に連番を振ることが出来る関数となっています。

    使い方

    早速ROW_NUMBER関数の使い方について説明していきます。

    まず記述についてですが、基本的には次のように行います。

    連番は「ROW_NUMBER関数 + OVER句 + ORDER BY」で範囲を指定して並び替えることで解決します。

    それでは実際にコードで見てみましょう。

    まず今回使用するテーブルの内容です。

    今回使うテーブルはSQL Serverのサンプルデータを一部カスタマイズして利用します。

    またレコードは500件ほど入っていますが、一部のみ抜粋しています。

    なおこのテーブルでは連番となっているカラムがありません。

    これではデータとしてあまりにも使い難いため、ROW_NUMBER関数を使って名前を基準とした昇順に並べ替え、連番のIDを振ってみます。

    実際の記述は次のようになります。

    RANKとの違い

    SQLにはもう一つ「RANK」という連番を振るための関数が存在しますが、RANKとROW_NUMBERには明確な違いがあります。

    RANKは同位に対して同順を振り、同位でも異順を振るのがROW_NUMBERとなります。

    もう少しわかりやすく説明するなら、RANKを使った場合にはソート時に同じ順位付けをされるものが出てくる可能性があるということです。

    このことから、単純に連番を付ける関数として考えた場合にはROW_NUMBERの方が向いているといえます。

    まとめ

    いかがでしたか?

    今回は連番を振る関数である「ROW_NUMBER」について解説してみました。

    ROW_NUMBER自体はそんなに覚えることが多いわけではない為、少ない説明でもマスターすることは出来るはずです。

    ただ、RANKとの違いを覚えておかないとケースによって使い分けることが難しくなる可能性もありますので、しっかりと知識も増やしていきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE