Menu
Coddy logo textTech

ROW_NUMBER function

CoddyのSQLジャーニー「基礎」セクションの一部。レッスン 57/72。

ウィンドウ関数は、現在の行に関連するテーブルの行セット全体に対して計算を実行します。通常の集計関数とは異なり、ウィンドウ関数は結果を単一の行に折りたたむことはありません。

これらは、特に以下のような作業が必要な場合に役立ちます:

  • 累計(ランニングトータル)の計算
  • グループ内での項目のランク付け
  • 現在の行と前後の行との比較
  • 期間にわたるトレンドの分析

例えば、ウインドウ関数のユースケースについての現実的な例をいくつか挙げます:

  • 売上分析
    • 各年(1995年、1997年、1999年)までの累計売上高を計算する
    • 各四半期の最売上商品を特定する
  • スポーツ統計
    • 異なる年ごとのオリンピックメダル獲得数を記録する
    • 各競技期間(2000年、2004年、2008年)における上位のアスリートを特定する

ROW_NUMBER() は最もシンプルなウィンドウ関数(window function)の1つです。結果セット(result)の各行(each row)に対して、一意の連続した番号を割り当てます。使い方は以下の通りです:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

ROW_NUMBER() では OVER 句を使用することが必須です: ROW_NUMBER() OVER ()

例えば以下の通りです:

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

これにより、1から全体の行数までをカウントする row_num 列が追加されます。

注: OVER クラスには、番号付けの動作を制御するための並べ替え(ordering)やパーティション分割(partitioning)の命令を含めることができます。

challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

密度が 5.677 より大きいすべての液体を取得してください。

結果に連番を付け(ROW_NUMBER() 関数を使用)、この列を row_num と命名してください。

自分で試してみよう

-- ウィンドウ関数を使用して、フィルタリングされた結果の各行に番号を付ける
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド