SQLウィンドウ関数を活用したランキングと集計の高度な処理

この記事では、SQLのウィンドウ関数を使ってランキングと集計を行う高度な処理について詳しく説明します。ウィンドウ関数はSQLの中でも高度な処理を可能にする機能であり、習得することでデータ分析やレポーティング作業が劇的に効率化します。

目次

ウィンドウ関数とは

ウィンドウ関数は、テーブルの特定の「ウィンドウ」と呼ばれる範囲に対して集計や演算を行うSQLの関数です。通常の集計関数(SUM、COUNT、AVGなど)が全ての行に対して処理を行うのに対し、ウィンドウ関数は指定した範囲だけで処理を行います。

基本的なウィンドウ関数の種類

関数名説明
ROW_NUMBER()行に一意な番号を付与する
RANK()ランキングを割り当てる(同じ値は同じ順位)
DENSE_RANK()ランキングを割り当てる(同じ値は同じ順位、順位は詰める)
NTILE(n)データをn等分する
SUM()ウィンドウ内の合計値を計算する
ウィンドウ関数の基本的な種類

ウィンドウ関数を使ったランキング

ROW_NUMBER()によるランキング

ROW_NUMBER()関数は、指定されたウィンドウ内で行に一意な番号を付与します。

SELECT name, point,
ROW_NUMBER() OVER (ORDER BY point DESC) AS ranking
FROM players;

具体的な例

以下のテーブルがあるとします。

名前得点
田中90
佐藤80
鈴木85
playersテーブル

このテーブルに対してROW_NUMBER()関数を適用すると、次のような結果になります。

名前得点ランキング
田中901
鈴木852
佐藤803
ROW_NUMBER()適用後のplayersテーブル

ウィンドウ関数を使った集計

SUM()によるウィンドウ内の合計

SUM()関数もウィンドウ関数として使用することで、特定の範囲内での合計を計算することができます。

SELECT department, salary,
SUM(salary) OVER (PARTITION BY department) AS total_salary
FROM employees;

具体的な例

以下のテーブルがあるとします。

部門給与
開発300万
開発400万
営業250万
employeesテーブル

このテーブルに対してSUM()ウィンドウ関数を適用すると、次のような結果になります。

部門給与部門内合計給与
開発300万700万
開発400万700万
営業250万250万
SUM()適用後のemployeesテーブル

まとめ

SQLのウィンドウ関数は、データの集計やランキングに非常に強力なツールです。特に、大量のデータを効率よく処理する必要がある場合や、高度なデータ分析を行いたい場合には欠かせない機能と言えるでしょう。

コメント

コメントする

目次