Obliczanie mediany pomaga znaleźć średnią wartość w danych i uniknąć szumu spowodowanego wartościami ekstremalnymi. Oto jak obliczyć medianę w PostgreSQL za pomocą percentile_cont ponieważ nie ma funkcji obliczania mediany w PostgreSQL
Jak obliczyć medianę w PostgreSQL
Obliczymy medianę w PostgreSQL, obliczając wartość 50. percentyla, ponieważ nie ma wbudowanej funkcji do obliczania mediany w PostgreSQL.
Załóżmy, że masz następującą tabelę sprzedaż(data_zamówienia,kwota)
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
Przeczytaj bonus:Jak obliczyć średnią kroczącą w PostgreSQL
Oto zapytanie do znalezienia mediany, czyli obliczenia 50. percentyla w PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
W powyższym zapytaniu używamy percentile_cont funkcja, która pozwala określić, jaki percentyl (np. 0.5 to 50. percentyl) chcesz obliczyć. Następnie używamy klauzuli WITHIN GROUP, aby poinformować PostgreSQL, aby obliczył percentyl w ramach grupy wyprzedaż wartości. Używamy również klauzuli ORDER BY, aby poinformować PostgreSQL o sortowaniu wyprzedaży wartości przed obliczeniem mediany.
Gdy używasz percentile_cont , PostgreSQL będzie interpolować medianę jako średnią z 2 średnich wartości (210,215).
Bonus Przeczytaj:Jak zaimportować plik CSV do tabeli PostgreSQL
Jeśli nie chcesz, aby PostgreSQL interpolował, ale zwracał tylko najbliższą wartość, użyj percentile_disc zamiast. Oto przykład
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Jeśli chcesz obliczyć medianę w PostgreSQL dla każdej grupy, użyj klauzuli GROUP BY, jak pokazano poniżej. Załóżmy, że Twoja sprzedaż tabela zawiera również produkt kolumna z nazwami produktów. W takim przypadku możesz obliczyć medianę dla każdego produktu za pomocą następującego zapytania.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Przeczytaj bonus:Jak obliczyć wzrost z miesiąca na miesiąc w PostgreSQL
Po obliczeniu mediany w PostgreSQL możesz użyć narzędzia do raportowania PostgreSQL, aby wykreślić wartości mediany wraz z wartościami sprzedaży na wykresie liniowym, aby przeanalizować różnicę. W tym celu połączymy obliczoną wartość mediany z oryginalną sprzedażą tabela, jak pokazano poniżej
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
Oto wykres liniowy, który pokazuje dzienną sprzedaż wraz z medianą, wykreśloną za pomocą Ubiq
Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych PostgreSQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.