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