CUME_DIST [Analytic]
Calculates the cumulative distribution, or relative rank, of the current row with regard to other rows in the same partition within a window.
CUME_DIST()
returns a number greater then 0 and less then or equal to 1, where the number represents the relative position of the specified row within a group of n rows. For a row x
(assuming ASC
ordering), the CUME_DIST
of x
is the number of rows with values lower than or equal to the value of x
, divided by the number of rows in the partition. For example, in a group of three rows, the cumulative distribution values returned would be 1/3, 2/3, and 3/3.
Because the result for a given row depends on the number of rows preceding that row in the same partition, you should always specify a window-order-clause when you call this function.
Behavior Type
Syntax
CUME_DIST ( ) OVER ( ... [ window-partition-clause ] ... window-order-clause )
Parameters
OVER()
|
Examples
The following example returns the cumulative distribution of sales for different transaction types within each month of the first quarter.
=> SELECT calendar_month_name AS month, tender_type, SUM(sales_quantity), CUME_DIST() OVER (PARTITION BY calendar_month_name ORDER BY SUM(sales_quantity)) AS CUME_DIST FROM store.store_sales_fact JOIN date_dimension USING(date_key) WHERE calendar_month_name IN ('January','February','March') AND tender_type NOT LIKE 'Other' GROUP BY calendar_month_name, tender_type; month | tender_type | SUM | CUME_DIST ----------+-------------+--------+----------- March | Credit | 469858 | 0.25 March | Cash | 470449 | 0.5 March | Check | 473033 | 0.75 March | Debit | 475103 | 1 January | Cash | 441730 | 0.25 January | Debit | 443922 | 0.5 January | Check | 446297 | 0.75 January | Credit | 450994 | 1 February | Check | 425665 | 0.25 February | Debit | 426726 | 0.5 February | Credit | 430010 | 0.75 February | Cash | 430767 | 1 (12 rows)