概要:このチュートリアルでは MySQL DENSE_RANK()
関数とそれを適用してパーティションまたは結果セット内の行のランクを見つける方法を学習します。
Introduction to MySQL DENSE_RANK function
DENSE_RANK()
は、ランキング値に隙間がないパーティションまたは結果セット内の行にランクを割り当てるウィンドウ関数です。
行のランクは、その行の前に来る明確なランク値の数から1つ増加します。
Code language: SQL (Structured Query Language) (sql)
この構文では:
- 最初に、
PARTITION BY
句はFROM
句で生成した結果集合をパーティションに分割します。 - 次に、
ORDER BY
句でDENSE_RANK()
関数が動作する各パーティションの行の順序を指定します。
パーティションに同じ順位値を持つ行が2つ以上ある場合、これらの行には同じ順位が割り当てられます。
RANK()
関数とは異なり、DENSE_RANK()
関数は常に連続している順位値を返します。
次のようなサンプルデータを含むテーブルt
があるとします:
Code language: SQL (Structured Query Language) (sql)
次のステートメントはDENSE_RANK()
関数を使用して各行にランクを割り当てます:
Code language: SQL (Structured Query Language) (sql)
以下がその出力です。
MySQL DENSE_RANK() 関数の例
デモでは、ウィンドウ関数チュートリアルで作成した sales
テーブルを使用します。
次のステートメントは、DENSE_RANK()
関数を使用して、販売額によって販売員のランク付けを行います。
Code language: SQL (Structured Query Language) (sql)
出力は以下のとおりです。
この例では:
- 最初に、
PARTITION BY
句は結果セットを年度を使用してパーティションに分割しました。 - 次に、
ORDER BY
句で売上高による販売員の降順の順序を指定します。 - 3番目に、
DENSE_RANK()
関数がORDER BY
句で指定した行順の各パーティションに適用されます。
このチュートリアルでは、MySQL DENSE_RANK()
関数を使用して、結果セットの各パーティションで行をランク付けする方法を学びました。
このチュートリアルは役に立ちましたか。