首页 > 数据库 > mysql教程 > 如何使用窗口函数计算 PostgreSQL 中的累积和?

如何使用窗口函数计算 PostgreSQL 中的累积和?

Mary-Kate Olsen
发布: 2025-01-12 17:23:45
原创
194 人浏览过

How Can I Calculate Cumulative Sums in PostgreSQL Using Window Functions?

在PostgreSQL中使用窗口函数计算累计和

问题:

您有一个暂存表,其中包含需要插入目标表的财务数据和累计和。暂存表结构包含以下列:

  • ea_month:月份
  • id:唯一标识符
  • amount:交易金额
  • ea_year:年份
  • circle_id:与交易相关的圈子

目标表应包含一个额外的列cum_amt,该列反映每行的金额的累计和。

解决方案:

为此,您可以使用PostgreSQL的窗口函数功能,该功能允许您对一定范围的行执行计算。具体来说,您可以使用OVER子句在定义的窗口内应用聚合函数(在本例中为SUM):

<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>
登录后复制

在此查询中:

  • PARTITION BY circle_id根据circle_id将数据划分为组,确保为每个圈子分别计算累计和。
  • ORDER BY ea_year, ea_month指定每个分区内的排序顺序,确保按时间顺序计算累计和。
  • cum_amt聚合SUM表达式计算每行的累计和,考虑从分区开始到当前行的所有行。

注意:确保您的表对(circle_idea_yearea_month)具有唯一索引,以保证计算的正确分组。这确保了具有相同circle_idea_yearea_month的行始终按排序顺序一起出现。

通过使用窗口函数技术,您可以有效地计算每行的累计和并将其插入目标表。

以上是如何使用窗口函数计算 PostgreSQL 中的累积和?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板