SQL ROW_NUMBER (日本語)

概要:このチュートリアルでは、ROW_NUMBER()を使用して各行に連番を割り当てる方法を学習します。クエリ結果セット内。

SQL ROW_NUMBER()関数の概要

ROW_NUMBER()は、連続した整数をに割り当てるウィンドウ関数です。クエリの結果セットの各行。

次に、ROW_NUMBER()関数の構文を示します。

この構文では

  • 最初に、PARTITION BY句は、FROM句をパーティションに分割します。 PARTITION BY句はオプションです。これを省略すると、結果セット全体が単一のパーティションとして扱われます。
  • 次に、ORDER BY句で各パーティションの行が並べ替えられます。 ROW_NUMBER()は順序に依存する関数であるため、ORDER BY句が必要です。
  • 最後に、各行の各行はパーティションには、行番号と呼ばれる連続した整数が割り当てられます。行番号は、パーティションの境界を超えるたびにリセットされます。

SQL ROW_NUMBER()の例

employeesおよびデモ用のサンプルデータベースのdepartmentsテーブル:

A)単純なSQL ROW_NUMBER()の例

次のステートメントは、すべての従業員の名、姓、および給与を検索します。さらに、ROW_NUMBER()関数を使用して、各行に連続した整数を追加します。

次の図部分的な結果セットを示します:

B )ページネーションにSQL ROW_NUMBER()を使用する

ROW_NUMBER()関数をページネーションに使用できます。たとえば、アプリケーションのテーブルのすべての従業員をページごとに表示する場合、各ページには10個のレコードがあります。

  • まず、ROW_NUMBER()関数を使用して、各行に連続した整数を割り当てます。
  • 次に、要求されたページで行をフィルタリングします。たとえば、最初のページには1から9までの行があり、2番目のページには11から20までの行があり、以下同様です。

次のステートメントは、のレコードを返します。 2番目のページでは、各ページに10個のレコードがあります。

出力を次に示します。

サブクエリの代わりに共通テーブル式(CTE)を使用する場合は、次のクエリを使用します。

C)SQLROW_NUMBERの使用()グループごとにn番目に高い値を見つけるため

次の例は、部門で給与が最も高い従業員を見つける方法を示しています。

サブクエリ内:

  • まず、PARTITION BY句で従業員を部門ごとに分散します。
  • 次に、ORDER BY句は、各部門の従業員を給与の降順で並べ替えます。
  • 3番目に、ROW_NUMBER()は各行に連続した整数を割り当てます。 。部門が変更されると、番号がリセットされます。

サブクエリの結果セットを次に示します。

外部クエリでは、row_numを持つ従業員行のみを選択しました。値1。

クエリ全体の出力は次のとおりです。

WHERE句の述語を1から2、3などに変更すると、次のような従業員が取得されます。 2番目に高い給与、3番目に高い給与などがあります。

このチュートリアルでは、SQL ROW_NUMBER()関数を使用してシーケンシャルを割り当てる方法を学習しました。クエリの結果セットの各行の整数。

  • このチュートリアルは役に立ちましたか?
  • はいいいえ

Write a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です