20 lines
604 B
PL/PgSQL
20 lines
604 B
PL/PgSQL
--
|
|
-- Determine the Quantile classifications from a numeric array
|
|
--
|
|
-- @param in_array A numeric array of numbers to determine the best
|
|
-- bins based on the Quantile method.
|
|
--
|
|
-- @param breaks The number of bins you want to find.
|
|
--
|
|
--
|
|
CREATE OR REPLACE FUNCTION CDB_QuantileBins(in_array numeric[], breaks int)
|
|
RETURNS numeric[]
|
|
AS $$
|
|
SELECT array_agg(p) FROM (
|
|
SELECT percentile_disc(idx::numeric / breaks::numeric)
|
|
WITHIN GROUP (ORDER BY x ASC) AS p
|
|
FROM generate_series(1, breaks) AS idx, unnest(in_array) AS x
|
|
GROUP BY idx
|
|
) AS quantiles;
|
|
$$ language sql;
|