CUME_DIST
説明
CUME_DIST(Cumulative Distribution)は、ソートされた結果セット内で現在の行の値の相対的な順位を計算するウィンドウ関数です。結果セット内の現在の行の累積分布値を返し、その範囲は0から1です。指定された行に対して、その累積分布値は次の式で求められます:(現在の行の値以下の行数)/(ウィンドウパーティション内の総行数)。
構文
CUME_DIST()
戻り値
0から1の範囲のDOUBLE値を返します。
例
sales_personという営業担当者名、sales_amountという売上金額、sales_dateという売上日を含む売上データが格納されたsalesというテーブルがあるとします。各売上日における各営業担当者の売上金額の累積パーセンテージを計算したいと思います。
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を使用したため、計算は各販売日に対して個別に実行され、営業担当者の販売金額は異なる日付に対して独立して計算されます。