Calcular la mediana lo ayuda a encontrar el valor medio en los datos y evitar el ruido debido a los valores extremos. Aquí se explica cómo calcular la mediana en PostgreSQL usando percentile_cont ya que no hay una función para calcular la mediana en PostgreSQL
Cómo calcular la mediana en PostgreSQL
Calcularemos la mediana en PostgreSQL calculando el valor del percentil 50, ya que no hay una función integrada para calcular la mediana en PostgreSQL.
Supongamos que tiene la siguiente tabla sales(order_date,amount)
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 calcular la media móvil en PostgreSQL
Aquí está la consulta para encontrar la mediana, es decir, calcular el percentil 50 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 que le permite definir qué percentil (por ejemplo, 0,5 que es el percentil 50) desea calcular. Luego también usamos la cláusula WITHIN GROUP para decirle a PostgreSQL que calcule el percentil dentro del grupo de venta valores. También usamos la cláusula ORDER BY para decirle a PostgreSQL que ordene la venta valores antes de calcular la mediana.
Cuando usas percentile_cont , PostgreSQL interpolará el valor medio como el promedio de 2 valores medios (210,215).
Lectura adicional:Cómo importar un archivo CSV en una tabla de PostgreSQL
Si no desea que PostgreSQL interpole sino que solo devuelva el valor más cercano, use percentile_disc en cambio. Aquí hay un ejemplo
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Si desea calcular la mediana en PostgreSQL para cada grupo, use la cláusula GROUP BY como se muestra a continuación. Digamos sus ventas la tabla también contiene producto columna con nombres de productos. En ese caso, puede calcular la mediana de cada producto mediante la siguiente consulta.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Lectura adicional:Cómo calcular el crecimiento mes a mes en PostgreSQL
Después de calcular la mediana en PostgreSQL, puede usar una herramienta de generación de informes de PostgreSQL para trazar los valores de la mediana junto con los valores de venta en un gráfico de líneas para analizar la diferencia. Para eso, uniremos el valor mediano 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 la mediana, trazadas 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.