在PostgreSQL中计算累积和
PostgreSQL数据库中,可以使用窗口函数从临时表中计算字段的累积和(或运行总和),并将结果转移到目标表。窗口函数允许根据分区中的一系列行执行计算,在本例中,根据circle_id
列创建的分区进行计算。
窗口函数语法
此处使用的窗口函数语法如下:
<code class="language-sql">sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt</code>
此窗口函数按circle_id
列进行分区,这意味着将为每个circle_id
分别计算累积和。在每个分区内,行按ea_year
和ea_month
列排序,这确保了为每个circle
从最早到最晚的月份计算累积和。
示例查询
根据提供的表结构,以下查询将生成所需的结果:
<code class="language-sql">SELECT ea_month, id, amount, ea_year, circle_id, sum(amount) OVER (PARTITION BY circle_id ORDER BY ea_year, ea_month) AS cum_amt FROM tbl ORDER BY circle_id, ea_year, ea_month;</code>
说明
该查询从tbl
表中提取相关列,并计算每个circle_id
的累积和。OVER
子句指定窗口函数的分区和顺序,确保为每个circle
正确计算累积和。
重要说明
OVER
子句中ORDER BY
子句的顺序对于获得所需结果至关重要。ORDER BY
子句中使用它们。但是,如果使用的是月份的字符串表示,则可能需要使用to_date()
函数将其转换为日期值。cum_amt
列将包含amount
列的累积和,按circle_id
分区,并按ea_year
和ea_month
排序。以上是如何使用窗口函数计算 PostgreSQL 中的累积和?的详细内容。更多信息请关注PHP中文网其他相关文章!