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

PostgreSQL中如何使用視窗函數有效率地計算累積和?

DDD
發布: 2025-01-12 17:20:44
原創
981 人瀏覽過

How to Efficiently Calculate Cumulative Sum in PostgreSQL Using Window Functions?

在PostgreSQL中計算累積和

使用PostgreSQL中的視窗函數可以有效率地計算欄位的累積和,從而將資料從暫存表更新到目標表。給定的問題需要根據“circle_id”查找“amount”欄位的累積金額,同時保留其他屬性。

為此,可以按照以下步驟操作:

  1. 對資料進行分割: 使用PARTITION BY子句根據「circle_id」建立分割區。這確保了對每個圓圈單獨進行計算。
  2. 將資料排序: 指定ORDER BY子句,依照「ea_year」和「ea_month」(或衍生的「the_date」欄位)對行進行排序。這決定了計算累積和的順序。
  3. 計算累積和: 使用OVER子句應用SUM()聚合函數。這將計算每個分區內以及目前行之前的行的「amount」欄位的累積和。

產生的查詢:

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

此查詢將產生所需的目標表,其中根據指定的排序順序為每一行計算累積金額(「cum_amt」)。

以上是PostgreSQL中如何使用視窗函數有效率地計算累積和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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