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