У меня есть этот запрос на выборку:найти сумму столбца, который содержит оконную функцию
SELECT
total,
COALESCE(total - Lag(total)OVER(ORDER BY total), 0) AS dif_total
FROM (select count(*) as total
FROM
tbl_person
left join
tbl_census
on
tbl_census.person_id = tbl_person.person_id
group by extract(year from tbl_census.date)
) abc
Есть ли способ, которым я мог бы найти сумму dif_total столбца?
Я не могу использовать Sum(), потому что он содержит функцию окна.
Я попытался сохранить столбец в массив, потому что, возможно, я мог бы вызвать функцию и преобразовать массив в столбец, а затем использовать Sum().
Но я испортил это.
Вот мой запрос для функции.
CREATE OR REPLACE function growth() Returns int[] as $$
declare total2 integer[];
BEGIN
SELECT
total,
COALESCE(total - Lag(total)OVER(ORDER BY total), 0) into total2
FROM
(select count(*) as total
from
tbl_person
group by extract(year from bdate)
) abc ;
RETURN total2;
END; $$ LANGUAGE plpgsql;
Функция запрос выполняется успешно и не показывает предупреждения или ошибки, но я думаю, что я делаю это неправильно, потому что, когда я пытаюсь выбрать его будет сказать
значение массива должно начинаться с " {"или информация об измерении
Я очень новичок в использовании хранимой функции в postgre.
Какие изменения я должен сделать, чтобы моя функция работала? Или каковы другие способы для меня суммировать столбец dif_total выше?