Изчисляването на медиана ви помага да намерите средна стойност в данните и да избегнете шум поради екстремни стойности. Ето как да изчислите медианата в PostgreSQL с помощта на percentile_cont тъй като няма функция за изчисляване на медиана в PostgreSQL
Как да изчислим медиана в PostgreSQL
Ще изчислим медиана в PostgreSQL, като изчислим 50-ия процентил, тъй като няма вградена функция за изчисляване на медиана в PostgreSQL.
Да приемем, че имате следната таблица продажби(дата_на_поръчка,сума)
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
Бонус за четене:Как да изчислим пълзящата средна в PostgreSQL
Ето заявката за намиране на медиана, тоест изчисляване на 50-ия персентил в PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
В горната заявка използваме percentile_cont функция, която ви позволява да дефинирате какъв процентил (например 0,5, което е 50-ти персентил) искате да изчислите. След това използваме и клауза WITHIN GROUP, за да кажем на PostgreSQL да изчисли процентил в рамките на групата продажба стойности. Ние също използваме клауза ORDER BY, за да кажем на PostgreSQL да сортира продажбата стойности преди изчисляване на медиана.
Когато използвате percentile_cont , PostgreSQL ще интерполира средната стойност като средна стойност от 2 средни стойности (210 215).
Бонус за четене:Как да импортирам CSV файл в PostgreSQL таблица
Ако не искате PostgreSQL да интерполира, а да връща само най-близката стойност, използвайте percentile_disc вместо. Ето един пример
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Ако искате да изчислите медиана в PostgreSQL за всяка група, използвайте клауза GROUP BY, както е показано по-долу. Да кажем вашите продажби таблицата също съдържа продукт колона с имена на продукти. В този случай можете да изчислите медианата за всеки продукт, като използвате следната заявка.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Бонус за четене:Как да изчислим растежа на месец спрямо месеца в PostgreSQL
След като изчислите медианата в PostgreSQL, можете да използвате PostgreSQL инструмент за отчитане, за да начертаете средните стойности заедно със стойностите на продажбите на линейна диаграма, за да анализирате разликата. За това ще обединим изчислената средна стойност с първоначалните продажби таблица, както е показано по-долу
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
Ето линейна диаграма, която показва дневните продажби заедно със средната стойност, начертана с Ubiq
Ако искате да създавате диаграми, табла за управление и отчети от базата данни PostgreSQL, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.