メインコンテンツまでスキップ
バージョン: 4.x

CUME_DIST

説明

CUME_DIST(Cumulative Distribution)は、ソート済みの結果セット内で現在の行の値の相対的なランキングを計算するウィンドウ関数です。結果セット内の現在の行の累積分布値を返し、その値は0から1の範囲になります。特定の行に対して、その累積分布値は次のように計算されます:(現在の行の値以下の行数)/(ウィンドウパーティション内の総行数)。

構文

CUME_DIST()

戻り値

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

sales_person(営業担当者名)、sales_amount(売上金額)、sales_date(売上日)を含む売上データが格納されたsalesというTableがあるとします。各売上日における各営業担当者の売上金額の累積パーセンテージを計算したいとします。

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 Tableに以下のデータが含まれていると仮定します:

+------+--------------+------------+--------------+
| 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を使用したため、計算は各販売日ごとに個別に実行され、営業担当者の売上金額は異なる日付に対して独立して計算されます。

このページでは