Добавление агрегатных функций в postgresql

  • 2017-02-05 | обновление: 2017-02-05
  • postgresql

К сожалению в стандарте SQL нет возможности посчитать медиану. Для добавление агрегатных функций в postgresql есть любопытное расширение quantile. Для установки нужен только pgxn client. У меня его не оказалось, поэтому сначала поставим этот клиент:

sudo aptitude install pgxnclient 

Затем устанавливаем само расширение и натравливаем его на базу (первая команда должна быть от имени рута):

sudo pgxn install quantile
pgxn load -d mydb quantile

Если при загрузки расширение ругнулось на недостаток прав:

INFO: best version: quantile 1.1.5
ERROR:  permission denied to create extension "quantile"
HINT:  Must be superuser to create this extension.

Дадим необходимые права:

sudo -u postgres psql # заходим в терминал
ALTER ROLE user SUPERUSER; # дываём необходимые права нашему пользователю

Теперь можно использовать новую функцию quantile с параметром 0.5 для подсчета медианы:

SELECT quantile(i, 0.5) FROM generate_series(1,2000) s(i);