Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ ウィンドウ関数 | トリガー、ウィンドウ関数、DCL
/
SQL最適化とクエリ機能

bookウィンドウ関数

メニューを表示するにはスワイプしてください

ウィンドウ関数は、定義されたウィンドウまたはパーティション内で、現在の行に関連する複数の行にわたって計算を行うSQL関数の一種です。
ウィンドウ関数は、クエリの結果セットの行数を減らすことなく、特定の行のサブセットに対して計算や分析を行うために使用されます。これは、通常クエリの返す行数を減らす集約関数とは異なります。

解説

次の Sales テーブルを例にします:

12
SELECT * FROM sales
copy

各製品ごとの総売上を計算し、それを新しいグループ化されたテーブルではなく、メインテーブル内の追加列として表示したい場合、結果は次のようになります:

しかし、どのように実現するのでしょうか?
GROUP BYの使用はこのタスクには適していません。この句は指定した条件で行をグループ化して行数を減らすため、IDとそれに対応する合計値のみが返されます。

この問題を解決するためにウィンドウ関数が不可欠です。

実装

次のクエリを使用して必要な結果を取得できます。

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

ウィンドウ関数を作成する一般的な構文は、次のように表されます:

SELECT 
    aggregation_func() OVER (
        PARTITION BY partition_column
        ORDER BY order_column
    )
FROM 
    table_name;
  • SELECT:クエリの開始を示すキーワード
  • aggregation_func():ウィンドウで定義された行の集合に対して計算を行う集約関数(例:SUMAVGCOUNT
  • OVER:ウィンドウ関数を導入するキーワード
  • PARTITION BY:指定した列の値に基づいて結果セットをパーティションに分割。ウィンドウ関数は各パーティションごとに個別に動作
    • partition_column:結果セットをパーティション分割するために使用される列
  • ORDER BY:各パーティション内の行の順序を指定
    • order_column:各パーティション内で行を並べ替えるために使用される列
  • FROM:データを取得する元のテーブルを示すキーワード
    • table_name:データを選択するテーブル名
question mark

ウィンドウ関数のパーティション分割を定義するために使用される句はどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  2
some-alt