SQL Advanced Aggregation
To be added
Table of contents
WITHIN GROUP
WITHIN GROUP is used to aggregate on ordered data.
This syntax simplifies some of the operations that would otherwise require workarounds with window functions.
Some examples with PERCENTILE_DISC and PERCENTILE_CONT (discrete and continuous percentiles):
WITH temp AS (SELECT GENERATE_SERIES(1, 100) AS val)
SELECT UNNEST(PERCENTILE_DISC(ARRAY [0.25, 0.5, 0.75, 1]) WITHIN GROUP ( ORDER BY val ))
FROM temp;
--- Result
--- 25, 50, 75, 100
WITH temp AS (SELECT GENERATE_SERIES(1, 100) AS val)
SELECT PERCENTILE_DISC(0.5) WITHIN GROUP ( ORDER BY val ) AS median
FROM temp;
-- Result
-- 50
UNNEST is used to convert an array into a set of rows.
Apart from PERCENTILE_DISC and PERCENTILE_CONT, WITHIN GROUP can be used with the preexisting window functions and also MODE.