Il calcolo della mediana ti aiuta a trovare il valore medio nei dati ed evitare il rumore dovuto a valori estremi. Ecco come calcolare la mediana in PostgreSQL usando percentile_cont poiché non esiste una funzione per calcolare la mediana in PostgreSQL
Come calcolare la mediana in PostgreSQL
Calcoleremo la mediana in PostgreSQL calcolando il valore del 50° percentile, poiché non esiste una funzione incorporata per calcolare la mediana in PostgreSQL.
Supponiamo che tu abbia la seguente tabella 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
Bonus Leggi:Come calcolare la media mobile in PostgreSQL
Ecco la query per trovare la mediana, ovvero calcolare il 50° percentile in PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
Nella query precedente, utilizziamo percentile_cont funzione che permette di definire quale percentile (es. 0,5 che è il 50° percentile) si vuole calcolare. Quindi utilizziamo anche la clausola WITHIN GROUP per dire a PostgreSQL di calcolare il percentile all'interno del gruppo di vendita valori. Usiamo anche la clausola ORDER BY per dire a PostgreSQL di ordinare la vendita valori prima di calcolare la mediana.
Quando usi percentile_cont , PostgreSQL interpolerà il valore mediano come media di 2 valori medi (210.215).
Bonus Lettura:come importare file CSV nella tabella PostgreSQL
Se non vuoi che PostgreSQL interpoli ma restituisca solo il valore più vicino, usa percentile_disc invece. Ecco un esempio
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Se vuoi calcolare la mediana in PostgreSQL per ogni gruppo, usa la clausola GROUP BY come mostrato di seguito. Diciamo le tue vendite la tabella contiene anche prodotto colonna con i nomi dei prodotti. In tal caso, puoi calcolare la mediana per ciascun prodotto utilizzando la query seguente.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Bonus Lettura:Come calcolare la crescita mese dopo mese in PostgreSQL
Dopo aver calcolato la mediana in PostgreSQL, puoi utilizzare uno strumento di reportistica di PostgreSQL per tracciare i valori mediani insieme ai valori di vendita su un grafico a linee per analizzare la differenza. Per questo uniremo il valore mediano calcolato con le vendite originali tabella come mostrato di seguito
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
Ecco un grafico a linee che mostra le vendite giornaliere insieme alla mediana, tracciato utilizzando Ubiq
Se vuoi creare grafici, dashboard e report dal database PostgreSQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.