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_year
和ea_month
對每個分區中的行進行排序。 OVER
子句定義一個窗口,該窗口將sum()
函數應用於從每個分區開始到當前行的行。 cum_amt
列中。 處理日期時間資料
如果您的ea_year
和ea_month
列儲存為字串,則查詢將按字母順序排序,而不是按時間順序排序。要正確排序,請考慮在執行計算之前將其轉換為日期類型。
排除同儕
在PostgreSQL 11及更高版本中,您可以使用frame_exclusion
選項來控制在視窗函數中如何處理同儕。這允許您從計算中包含或排除某些行。
按照這些步驟,您可以有效地在PostgreSQL中計算累積和,從而為您的資料提供有價值的見解。
以上是如何使用視窗函數計算 PostgreSQL 中的累積和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!