Výpočet mediánu vám pomůže najít střední hodnotu v datech a vyhnout se šumu kvůli extrémním hodnotám. Zde je návod, jak vypočítat medián v PostgreSQL pomocí percentile_cont protože v PostgreSQL není žádná funkce pro výpočet mediánu
Jak vypočítat medián v PostgreSQL
Medián v PostgreSQL vypočítáme výpočtem hodnoty 50. percentilu, protože v PostgreSQL není žádná vestavěná funkce pro výpočet mediánu.
Řekněme, že máte následující tabulku prodej (datum_objednávky, částka)
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
Bonusové čtení:Jak vypočítat klouzavý průměr v PostgreSQL
Zde je dotaz k nalezení mediánu, tedy výpočtu 50. percentilu v PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
Ve výše uvedeném dotazu používáme percentile_cont funkce, která vám umožní definovat, jaký percentil (např. 0,5, což je 50. percentil) chcete vypočítat. Pak také používáme klauzuli WITHIN GROUP, abychom PostgreSQL sdělili, aby vypočítal percentil v rámci skupiny prodej hodnoty. Také používáme klauzuli ORDER BY, abychom PostgreSQL sdělili, aby třídil prodej hodnoty před výpočtem mediánu.
Když použijete percentile_cont , PostgreSQL bude interpolovat střední hodnotu jako průměr 2 středních hodnot (210 215).
Bonusové čtení:Jak importovat soubor CSV v tabulce PostgreSQL
Pokud nechcete, aby PostgreSQL interpoloval, ale vrátil pouze nejbližší hodnotu, použijte percentile_disc namísto. Zde je příklad
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Pokud chcete vypočítat medián v PostgreSQL pro každou skupinu, použijte klauzuli GROUP BY, jak je uvedeno níže. Řekněme vaše prodeje tabulka také obsahuje produkt sloupec s názvy produktů. V takovém případě můžete vypočítat medián pro každý produkt pomocí následujícího dotazu.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Bonusové čtení:Jak vypočítat měsíční růst v PostgreSQL
Po výpočtu mediánu v PostgreSQL můžete pomocí nástroje PostgreSQL Reporting Tool vykreslit mediánové hodnoty spolu s hodnotami prodeje do spojnicového grafu a analyzovat rozdíl. Za tímto účelem spojíme vypočítanou střední hodnotu s původním prodejem tabulka, jak je uvedeno níže
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
Zde je spojnicový graf, který ukazuje denní prodeje spolu s mediánem, vykreslený pomocí Ubiq
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze PostgreSQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.