0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL入門】PARTITION BYとは?GROUP BYとの違いから実例まで解説

Last updated at Posted at 2025-10-17

SQLのウィンドウ関数を使うと、データ分析の幅が広がります。
その中でもよく使われるのが PARTITION BY です。

GROUP BYとの違いも含めて今回は 初心者でもわかるように基本から応用までを解説します。


1. PARTITION BYとは? (GROUP BYとの違い)

まずは、よく混同されるGROUP BYとの違いを押さえましょう。

比較ポイント GROUP BY PARTITION BY(ウィンドウ関数)
行の数 グループごとに1行にまとめる(行が減る) 行はそのまま残る(減らない)
用途 グループ全体の集計を出したいとき グループ内の情報を各行に表示したいとき

簡単に言うと、

  • GROUP BY:まとめて集計する
  • PARTITION BY:分けて集計する(行はそのまま)

2. PARTITION BYの基本構文

PARTITION BYは、ウィンドウ関数の中でOVER句と一緒に使います。

集計関数(カラム名) OVER (
    PARTITION BY 区切りたいカラム
    ORDER BY 並べたいカラム
) AS 新しい列名

3. 例1:部署ごとの平均給与を出す

次のような社員テーブルがあるとします。

employee_id department salary
1 Sales 500
2 Marketing 700
3 Sales 600
4 Marketing 800

各社員が「自分の部署の平均給与」と比べてどうなのかを見たい場合は、以下のように書きます。

SELECT
    employee_id,
    department,
    salary,
    AVG(salary) OVER (PARTITION BY department) AS dept_avg_salary
FROM
    employees;

実行結果:

employee_id department salary dept_avg_salary
1 Sales 500 550
3 Sales 600 550
2 Marketing 700 750
4 Marketing 800 750

部署ごとの平均給与が、各行にそのまま表示されました。
これで「社員1は平均より低い」「社員4は平均より高い」といった比較が簡単にできます。


4. 例2:部署ごとの給与順位をつける

PARTITION BYは、集計だけでなく順位付けにも使えます。
ここではRANK()関数を使って、部署ごとの給与ランキングを出してみます。

SELECT
    employee_id,
    department,
    salary,
    RANK() OVER (
        PARTITION BY department   -- 部署ごとに区切る
        ORDER BY salary DESC      -- 給与が高い順に並べる
    ) AS rank_in_dept
FROM
    employees;

実行結果:

employee_id department salary rank_in_dept
4 Marketing 800 1
2 Marketing 700 2
3 Sales 600 1
1 Sales 500 2

このように、部署をまたがずにグループごとの順位付けができます。


5. まとめ

PARTITION BYは「グループごとに区切って分析」できる便利な機能です。
GROUP BYと違い、レコードを残したまま集計や順位付けができるのが特徴です。

覚えておきたいポイントは以下の3つです。

  • GROUP BYはレコードをまとめる
  • PARTITION BYはレコードを残したまま集計できる
  • 集計や順位を「グループ単位」で出すときに使える

実務では次のような場面でよく使われます。

  • 売上データから「店舗ごとの売上順位」を出す
  • ユーザーごとに「最新の購入履歴」を取得する
  • 日付ごとの「累積売上」を計算する

PARTITION BYは分析やレポート作成で欠かせない機能です。
まずは平均値や順位付けなど、身近なケースから使ってみると理解が深まります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?