ウィンドウ関数
メニューを表示するにはスワイプしてください
ウィンドウ関数は、定義されたウィンドウまたはパーティション内で、現在の行に関連する複数の行にわたって計算を行うSQL関数の一種です。
ウィンドウ関数は、クエリの結果セットの行数を減らすことなく、特定の行のサブセットに対して計算や分析を行うために使用されます。これは、通常クエリの返す行数を減らす集約関数とは異なります。
解説
次の Sales テーブルを例にします:
12SELECT * FROM sales
各製品ごとの総売上を計算し、それを新しいグループ化されたテーブルではなく、メインテーブル内の追加列として表示したい場合、結果は次のようになります:
しかし、どのように実現するのでしょうか?
GROUP BYの使用はこのタスクには適していません。この句は指定した条件で行をグループ化して行数を減らすため、IDとそれに対応する合計値のみが返されます。
この問題を解決するためにウィンドウ関数が不可欠です。
実装
次のクエリを使用して必要な結果を取得できます。
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
ウィンドウ関数を作成する一般的な構文は、次のように表されます:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT:クエリの開始を示すキーワード
- aggregation_func():ウィンドウで定義された行の集合に対して計算を行う集約関数(例:
SUM、AVG、COUNT) - OVER:ウィンドウ関数を導入するキーワード
- PARTITION BY:指定した列の値に基づいて結果セットをパーティションに分割。ウィンドウ関数は各パーティションごとに個別に動作
- partition_column:結果セットをパーティション分割するために使用される列
- ORDER BY:各パーティション内の行の順序を指定
- order_column:各パーティション内で行を並べ替えるために使用される列
- FROM:データを取得する元のテーブルを示すキーワード
- table_name:データを選択するテーブル名
すべて明確でしたか?
フィードバックありがとうございます!
セクション 3. 章 2
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 3. 章 2