SQLのrownumberとrankの違い

下次还敢
リリース: 2024-05-09 09:18:20
オリジナル
537 人が閲覧しました

ROW_NUMBER と RANK はどちらも、SQL 結果セットを並べ替えて番号を付けるために使用される関数です。 ROW_NUMBER は挿入順に連続する整数を行に割り当てますが、RANK は同じ値を持つ行に同じランクを割り当て、重複を避けるために後続の行に番号を付け直します。 ROW_NUMBER は常に連続した整数を返しますが、RANK は行の値に応じて同じまたは異なるランクを返すことができます。 ROW_NUMBER は、挿入順に行に番号を付けるか、特定の基準に基づいて連続するサブセットに番号を付けるために使用され、RANK は行をランク付けするか、同じ値を持つ行の相対位置を決定するために使用されます。

SQLのrownumberとrankの違い

SQL における ROW_NUMBER と RANK の違い

ROW_NUMBER と RANK はどちらも、SQL で結果セットを並べ替えて番号を付けるために使用される関数です。どちらも同様の目的を果たしますが、実装と結果にはいくつかの重要な違いがあります。

実装の違い

  • ROW_NUMBER: 各行に一意の整数を割り当て、行が挿入された順序で番号を付けます。
  • RANK: 同じ値を持つ行に同じランクを割り当てますが、ランクが重複しないように後続の行の番号を付け直します。

結果の違い

  • ROW_NUMBER: 行の値に関係なく、常に連続した整数を返します。同じランクの下にあるすべての行には、同じ ROW_NUMBER が割り当てられます。
  • RANK: 行の値に応じて、同じまたは異なるランキングを返すことができます。同じランクの下にあるすべての行には、同じ RANK が割り当てられます。

使用シナリオ

  • ROW_NUMBER: 挿入順序で行に番号を付ける必要がある場合、または特定の条件に基づいて連続するサブセットに番号を付ける必要がある場合に便利です。
  • RANK: 行をランク付けする必要がある場合、または同じ値を持つ行の相対位置を決定する必要がある場合に便利です。

<code class="sql">-- ROW_NUMBER
SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNum, *
FROM table_name;

-- RANK
SELECT RANK() OVER (ORDER BY id) AS Rank, *
FROM table_name;</code>
ログイン後にコピー

結果

id RowNum Rank
1 1 1
2 2 1
3 3 3
4 4 2
5 5 4

以上がSQLのrownumberとrankの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート