我想在postgres中编写一个非递归公共表表达式(cte)来计算累积和,下面是一个示例,输入表:
----------------------
1 | A | 0 | -1
1 | B | 3 | 1
2 | A | 1 | 0
2 | B | 3 | 2
输出应如下所示:
----------------------
1 | A | 0 | -1
1 | B | 3 | 1
2 | A | 1 | -1
2 | B | 6 | 3
如您所见,第3列和第4列的累积和是计算出来的,使用递归cte很容易做到这一点,但是如何使用非递归cte呢?
2条答案
按热度按时间liwlm1x91#
使用窗口函数。假设表中有列
col1
,col2
,col3
以及col4
,即:8aqjt8rx2#
你可以使用一个窗口函数来计算一个累积和。我看不出你的例子中的和是什么,但语法是这样的:
以你为例,这似乎是: