首頁 > 資料庫 > mysql教程 > 如何使用視窗函數計算 PostgreSQL 中的累積和?

如何使用視窗函數計算 PostgreSQL 中的累積和?

Mary-Kate Olsen
發布: 2025-01-12 17:23:45
原創
217 人瀏覽過

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):

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;
登入後複製

在此查詢中:

  • 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板