Menu
Coddy logo textTech

ROW_NUMBER関数

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

window functionsは、現在のrowに関連する一連のテーブル行に対して計算を実行します。通常の集約関数とは異なり、window functionsは結果を単一の行にまとめません。

特に次のようなことが必要な場合に便利です:

  • 累計を計算する
  • グループ内で項目を順位付けする
  • 現在の行を前後の行と比較する
  • 期間ごとの傾向を分析する

たとえば、window functionsの使用例に関する現実世界の例をいくつか紹介します。

  • 売上分析
    • 各年(1995年、1997年、1999年)までの累積売上を計算する
    • 各四半期の売上上位商品を見つける
  • スポーツ統計
    • 異なる年におけるオリンピックのメダル数を追跡する
    • 各大会期間(2000、2004、2008)で首位のアスリートを特定する

ROW_NUMBER() は最もシンプルなウィンドウ関数の 1 つです。結果セット内の各行に、一意の連番を割り当てます。使用方法は次のとおりです。

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 句には、番号付けの仕組みを制御するための並べ替えとパーティション分割の指示を含めることができます。

challenge icon

チャレンジ

簡単

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

  • liquidsiddensity

密度が 5.677 を超えるすべての liquids を取得します。

結果に番号を付け(ROW_NUMBER() 関数を使用)、この列を row_num と呼びます。

自分で試してみよう

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

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

基礎のすべてのレッスン

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