PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изчислим медиана в PostgreSQL

Изчисляването на медиана ви помага да намерите средна стойност в данните и да избегнете шум поради екстремни стойности. Ето как да изчислите медианата в 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-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pgFincore 1.2, разширение PostgreSQL

  2. Бавна проста заявка за актуализиране на PostgreSQL база данни с 3 милиона реда

  3. Rails недефиниран метод за ActiveRecord_Associations_CollectionProxy

  4. pgadmin4:postgresql сървърът на приложения не може да бъде свързан.

  5. Разрешаване на нула в уникална колона