PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak obliczyć medianę w PostgreSQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić limit czasu instrukcji dla wykonania zapytania

  2. Jak Cosd() działa w PostgreSQL

  3. Jak pobrać komentarz bazy danych PostgreSQL?

  4. Tworzenie PostgreSQL dla Windows, część 2

  5. Jak zachować dane w zadokowanej bazie danych postgres przy użyciu woluminów?