メインコンテンツまでスキップ
に最終更新

CUME_DIST

説明​

CUME_DIST(累積分布)は、並べ替えた結果セットにおける現在行の値の相対的な順位を計算するウィンドウ関数です。結果セット内の現在行の累積分布値を 0 から 1 の範囲で返します。ある行の累積分布値は、(現在行の値以下の値を持つ行数)/(ウィンドウパーティション内の総行数)で求められます。

構文​

CUME_DIST()

戻り値​

0 から 1 の範囲の DOUBLE 値を返します。

例​

sales というテーブルに、販売担当者名(sales_person)、売上額(sales_amount)、売上日(sales_date)などの売上データがあるとします。売上日ごとに、各販売担当者の売上額の累積比率を計算します。

SELECT 
sales_person,
sales_date,
sales_amount,
CUME_DIST() OVER (PARTITION BY sales_date ORDER BY sales_amount ASC) AS cumulative_sales_percentage
FROM
sales;

sales テーブルに次のデータが格納されているとします。

+------+--------------+------------+--------------+
| id | sales_person | sales_date | sales_amount |
+------+--------------+------------+--------------+
| 1 | Alice | 2024-02-01 | 2000 |
| 2 | Bob | 2024-02-01 | 1500 |
| 3 | Alice | 2024-02-02 | 1800 |
| 4 | Bob | 2024-02-02 | 1200 |
| 5 | Alice | 2024-02-03 | 2200 |
| 6 | Bob | 2024-02-03 | 1900 |
| 7 | Tom | 2024-02-03 | 2000 |
| 8 | Jerry | 2024-02-03 | 2000 |
+------+--------------+------------+--------------+

上の SQL クエリを実行すると、売上日ごとに各販売担当者の売上額とその累積比率による順位が表示されます。

+--------------+------------+--------------+-----------------------------+
| sales_person | sales_date | sales_amount | cumulative_sales_percentage |
+--------------+------------+--------------+-----------------------------+
| Bob | 2024-02-01 | 1500 | 0.5 |
| Alice | 2024-02-01 | 2000 | 1 |
| Bob | 2024-02-02 | 1200 | 0.5 |
| Alice | 2024-02-02 | 1800 | 1 |
| Bob | 2024-02-03 | 1900 | 0.25 |
| Tom | 2024-02-03 | 2000 | 0.75 |
| Jerry | 2024-02-03 | 2000 | 0.75 |
| Alice | 2024-02-03 | 2200 | 1 |
+--------------+------------+--------------+-----------------------------+

この例では、CUME_DIST() 関数は売上日ごとに売上額を並べ替え、その日の各販売担当者の売上額の累積比率を計算します。PARTITION BY sales_date を使用しているため、日付が異なる場合、販売担当者の売上額はそれぞれ独立して計算されます。