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)の命令を含めることができます。
チャレンジ
簡単利用可能なテーブルと列:
<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 > ____このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns自分で練習してみよう: SQLプレイグラウンド