des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Postgres математическое среднее?

предположим есть таблица где x соттветствует y
нужно найти среднее арифметическое для любого числа пар x-y

формула будет такой
sum(x) = x1+x2
avg(y) = ((x1*y1)+(x2*y2))/(x1+x2)

на постгрес можно реализовать такое?
jjj9R.png
  • Вопрос задан
  • 768 просмотров
Пригласить эксперта
Ответы на вопрос 1
С сайта: https://wiki.postgresql.org/wiki/Aggregate_Median

CREATE OR REPLACE FUNCTION _final_median(numeric[])
RETURNS numeric AS
$$
SELECT AVG(val)
FROM (
SELECT val
FROM unnest($1) val
ORDER BY 1
LIMIT 2 - MOD(array_upper($1, 1), 2)
OFFSET CEIL(array_upper($1, 1) / 2.0) - 1
) sub;
$$
LANGUAGE 'sql' IMMUTABLE;

CREATE AGGREGATE median(numeric) (
SFUNC=array_append,
STYPE=numeric[],
FINALFUNC=_final_median,
INITCOND='{}'
);

SELECT median(num_value) AS median_value FROM t;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы