この記事では、SQLのウィンドウ関数と集約関数(MAX/MIN)を組み合わせてデータ分析を行う応用例について解説します。ウィンドウ関数を活用することで、各レコードに対する相対的な計算が容易になります。MAX/MIN関数と組み合わせることで、さらに分析の幅が広がります。
目次
ウィンドウ関数とは
ウィンドウ関数は、SQLの強力な機能の一つであり、データセット内の各行に対する集計処理を行うことができます。基本的な集約関数(SUM、AVG、MAX、MINなど)とは異なり、ウィンドウ関数はデータを集約せず、元の行を保持したまま各行に対する計算を行います。
基本的な使い方
ウィンドウ関数はOVER句と組み合わせて使用します。基本的な使い方の一例を以下に示します。
SELECT name, age, AVG(age) OVER() AS avg_age FROM users;
MAX/MIN関数の基本
MAX/MIN関数は、指定された列の最大値や最小値を取得するための集約関数です。この関数もウィンドウ関数と同様に、OVER句を使用して各行に対する最大値や最小値を計算することができます。
基本的な使い方
MAX/MIN関数の基本的な使い方は以下の通りです。
SELECT name, age, MAX(age) OVER() AS max_age FROM users;
ウィンドウ関数とMAX/MINを組み合わせた応用例
ウィンドウ関数とMAX/MINを組み合わせることで、さまざまなデータ分析が可能になります。以下に具体的な例を示します。
例1:部門ごとの最高給与と最低給与
部門ごとに最高給与と最低給与を調べる場合、以下のようにSQLを記述できます。
SELECT department, salary,
MAX(salary) OVER(PARTITION BY department) AS max_salary,
MIN(salary) OVER(PARTITION BY department) AS min_salary
FROM employees;
部門 | 給与 | 最高給与 | 最低給与 |
---|---|---|---|
開発 | 500万 | 800万 | 300万 |
営業 | 400万 | 600万 | 250万 |
例2:ランキングの取得
商品の売上ランキングを取得する場合、以下のSQLを使用できます。
SELECT product_name, sales_amount,
RANK() OVER(ORDER BY sales_amount DESC) AS ranking
FROM sales;
商品名 | 売上額 | ランキング |
---|---|---|
商品A | 1000万 | 1 |
商品B | 800万 | 2 |
まとめ
この記事では、ウィンドウ関数とMAX/MIN関数を組み合わせたSQLの応用例について詳しく解説しました。これらの関数を上手に活用することで、高度なデータ分析が行えます。特に、ウィンドウ関数を用いることで、各行に対する相対的な計算が容易になり、MAX/MIN関数と組み合わせることで更に多角的な分析が可能になります。
created by Rinker
¥4,554
(2024/11/22 10:55:01時点 Amazon調べ-詳細)
コメント