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中文网其他相关文章!