gpt4 book ai didi

sql - 查找包含窗口函数的列的总和

转载 作者:行者123 更新时间:2023-11-29 13:23:13 24 4
gpt4 key购买 nike

我有这个选择查询:

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;

函数查询成功运行,没有显示任何警告或错误,但我认为我做错了,因为当我尝试选择它时,它会说

Array value must start with "{" or dimension information

我对在 postgre 中使用存储函数非常陌生。
我应该对我的功能进行哪些更改才能工作?或者我还有哪些其他方法可以对上面的 dif_total 列求和?

最佳答案

为什么不直接用另一个 select 包裹它呢?

SELECT total,sum(dif_total) as total_2
FROM ( YOUR QUERY HERE...)
GROUP BY total

关于sql - 查找包含窗口函数的列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38070560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com