

Therefore a stack of union all rollups is not a nice solution.Ī blog post from 2016 calls out this problem and provides a rudimentary workaround, so thank you Mark D. The result needs to work on a redshift cluster, furthermore this is a simplified problem and the actual desired result has product category and customer type, which multiplies the number of partitions needed. * otc is a table of dated transactions of customers, channels, and month of order */ , count(distinct customer_id) over() as ytd_total_customers , count(distinct customer_id) over(partition by order_month) as monthly_customers_all_channels , count(distinct customer_id) over(partition by traffic_channel) as ytd_customers_by_channel , count(distinct customer_id) over(partition by order_month, traffic_channel) as customers_by_channel_and_month This is what I would write in postgres (or Oracle for that matter): select order_month
REDSHIFT RANK FUNCTION FULL

My use case: count customers over varying time intervals and traffic channels AWS documentation for COUNT states this, and distinct isn't supported for any of the window functions. Redshift doesn't support DISTINCT aggregates in its window functions.
