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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-12 17:31:50285瀏覽

How to Calculate Cumulative Sums in PostgreSQL Using Window Functions?

PostgreSQL中累積和的計算

在資料處理中,經常需要計算特定欄位的累積和或運行總和。在PostgreSQL中,可以使用視窗函數輕鬆實現此目標。

視窗函數簡介

視窗函數可讓您對基於特定條件分組在一起的行執行計算。在本例中,我們希望按circle_id分組行,併計算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>

在此查詢中:

  • PARTITION BY子句按circle_id列分組行。
  • ORDER BY子句按ea_yearea_month對每個分區中的行進行排序。
  • OVER子句定義一個窗口,該窗口將sum()函數應用於從每個分區開始到當前行的行。
  • 產生的累積和儲存在cum_amt列中。

處理日期時間資料

如果您的ea_yearea_month列儲存為字串,則查詢將按字母順序排序,而不是按時間順序排序。要正確排序,請考慮在執行計算之前將其轉換為日期類型。

排除同儕

在PostgreSQL 11及更高版本中,您可以使用frame_exclusion選項來控制在視窗函數中如何處理同儕。這允許您從計算中包含或排除某些行。

按照這些步驟,您可以有效地在PostgreSQL中計算累積和,從而為您的資料提供有價值的見解。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn