PERCENTILE_CONT
Devuelve un percentil, es decir, el valor por debajo del cual queda la proporción indicada de los valores del grupo; entre valores contiguos calcula un valor intermedio.
PostgreSQL 17.9
PERCENTILE_CONT(fraction) WITHIN GROUP (ORDER BY expression)- fraction
- Proporción de 0 a 1, por ejemplo 0.5 para la mediana; también admite un array de proporcionesdouble precision
- expression
- Expresión numérica o intervalo por el que se ordenan los valoresdouble precision | interval
Valor devuelto
Número (double precision) o intervalo; un array si fraction es un array; con un conjunto vacío, NULL
Ejemplos
Mediana y precio medio
PostgreSQL 17.9
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (
ORDER BY unit_price
) AS median,
AVG(unit_price) AS average
FROM Payments;Precio mediano por miembro de la familia
PostgreSQL 17.9
SELECT family_member,
PERCENTILE_CONT(0.5) WITHIN GROUP (
ORDER BY unit_price
) AS median_price
FROM Payments
GROUP BY family_member
ORDER BY family_member;Cuartiles en una sola llamada
PostgreSQL 17.9
SELECT PERCENTILE_CONT(ARRAY [0.25, 0.5, 0.75]) WITHIN GROUP (
ORDER BY unit_price
) AS quartiles
FROM Payments;Detalles
La función tiene una notación especial: la expresión no va entre los paréntesis, sino en WITHIN GROUP (ORDER BY ...). Los valores NULL se ignoran.
Si la posición cae entre dos valores, el resultado se calcula entre ellos: para 1, 2, 3 y 10 la mediana es 2.5. Para obtener uno de los valores existentes, usa PERCENTILE_DISC. A diferencia de AVG, la mediana apenas depende de unos pocos valores muy grandes.