我有这个选择查询:
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总结为什么?
答案 0 :(得分:1)
为什么不用另一个选择包裹它?
SELECT total,sum(dif_total) as total_2
FROM ( YOUR QUERY HERE...)
GROUP BY total