El cálculo del percentil le ayuda a clasificar los datos para el análisis, así como a calcular la mediana de un conjunto de valores. Aquí se explica cómo calcular el percentil en PostgreSQL usando percentile_cont Función de ventana. También veremos cómo calcular el percentil 50, el percentil 90, el percentil 95 y el percentil n en PostgreSQL, ya que se usan comúnmente en el análisis de datos.
Cómo calcular el percentil en PostgreSQL
Calcularemos el percentil en PostgreSQL usando percentile_cont función de ventana
Supongamos que tiene la siguiente tabla sales(order_date,amount) y desea calcular el percentil 50.
postgres=# create table sales(order_date date,sale int); postgres=# insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); postgres=# select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Lectura adicional:Cómo completar las fechas que faltan en PostgreSQL
Aquí está la consulta para calcular el percentil 50 en PostgreSQL. Puede usar la misma consulta para calcular la mediana en PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
En la consulta anterior, usamos percentile_cont función de ventana que le permite definir qué percentil (por ejemplo, 0.5 es decir, el percentil 50) que desea calcular. Luego también usamos la cláusula DENTRO DEL GRUPO para calcular el percentil dentro del grupo de venta valores. También usamos la cláusula ORDER BY para ordenar la venta valores antes de calcular el percentil en PostgreSQL.
Cuando usas percentile_cont función de ventana, PostgreSQL interpolará el valor mediano como el promedio de 2 valores medios (210, 215), en caso de que haya 2 valores medios. Por eso devuelve 212.5
Lectura adicional:Cómo calcular la media móvil en PostgreSQL
Cuando pueda calcular el percentil en PostgreSQL, si no desea que PostgreSQL interpole sino que solo devuelva el valor más cercano, use percentile_disc función de ventana en su lugar. Aquí hay un ejemplo
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
En este caso, devolverá el de los valores medios, en caso de que haya 2 valores medios.
Lectura adicional:Cómo importar un archivo CSV a PostgreSQL
Cómo calcular el percentil 90 en PostgreSQL
De manera similar, puede calcular el percentil 90 en PostgreSQL usando percentile_cont. Cambiamos 0.5 a 0.9 en percentil_cont función
postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 255
También puede calcular el percentil 90 en PostgreSQL usando percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 250
Cómo calcular el percentil 95 en PostgreSQL
De manera similar, puede calcular el percentil 95 en PostgreSQL, usando percentile_cont
postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 277.5
También puede calcular el percentil 95 en PostgreSQL usando percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 300
Cómo calcular el percentil n en PostgreSQL
De manera similar, puede calcular el percentil n en PostgreSQL usando percentile_cont. Básicamente proporcionamos n/100 en percentile_cont función
postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
También puede calcular el percentil 90 en PostgreSQL usando percentile_disc
postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Después de calcular el percentil en PostgreSQL, puede usar una herramienta de generación de informes de PostgreSQL para trazar los valores de percentil junto con los valores de venta en un gráfico de líneas para analizar la diferencia y también establecer objetivos. Para ello, uniremos el valor del percentil 50 calculado con las ventas originales. tabla como se muestra a continuación
postgres=# select * from sales, (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales) temp order by order_date; order_date | sale | percentile_cont ------------+------+----------------- 2020-04-01 | 210 | 212.5 2020-04-02 | 125 | 212.5 2020-04-03 | 150 | 212.5 2020-04-04 | 230 | 212.5 2020-04-05 | 200 | 212.5 2020-04-06 | 25 | 212.5 2020-04-07 | 215 | 212.5 2020-04-08 | 300 | 212.5 2020-04-09 | 250 | 212.5 2020-04-10 | 220 | 212.5
Aquí hay un gráfico de líneas que muestra las ventas diarias junto con el percentil, trazado con Ubiq
Si desea crear gráficos, paneles e informes a partir de la base de datos PostgreSQL, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.