如何依條件重置Oracle中的累計和?

Patricia Arquette
發布: 2024-11-02 20:30:03
原創
469 人瀏覽過

How to Reset a Cumulative Sum in Oracle Based on a Condition?

Oracle 中的條件求和

Oracle 中,條件求和是指執行累加求和操作,同時根據指定條件重置累加值。此技術可讓您以某種方式操作數據,使總和在達到特定閾值時重置為特定值。

要實現此目的,您可以利用 SQL MODEL 子句。此子句使您能夠定義分層資料模型並指定基於該模型的計算。

請考慮以下範例,其中您要計算每次超過15 時重置的累積總和:

with test_data (sort_col, addend) as
(
  SELECT 'A', 3 FROM DUAL UNION ALL
  SELECT 'B', 7 FROM DUAL UNION ALL
  SELECT 'C', 6 FROM DUAL UNION ALL
  SELECT 'D', 5 FROM DUAL UNION ALL
  SELECT 'E', 9 FROM DUAL UNION ALL
  SELECT 'F', 3 FROM DUAL UNION ALL
  SELECT 'G', 8 FROM DUAL
),
sorted_inputs (sort_col, sort_order, addend, running_sum_max_15) as
(
  SELECT sort_col, row_number() over (order by sort_col) sort_order, addend, 0 from test_data
)
SELECT sort_col, addend, running_sum_max_15
from sorted_inputs
model 
dimension by (sort_order)
measures (sort_col, addend, running_sum_max_15)
rules update
(
  running_sum_max_15[1] = addend[1],
  running_sum_max_15[sort_order>1] = 
    case 
      when running_sum_max_15[CV(sort_order)-1] < 15 
      THEN running_sum_max_15[CV(sort_order)-1] 
      ELSE 0 END + addend[CV(sort_order)]
)
登入後複製

結果:

SORT_COL ADDEND RUNNING_SUM_MAX_15
A 3 3
B 7 10
C 6 16
D 5 5
E 9 14
F 3 17
G 8 8

如您所見,「C」和「F」行的運行總和在超過15 後重置為0。這允許您根據查詢中定義的特定條件執行條件求和。

以上是如何依條件重置Oracle中的累計和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!