如何根据条件重置Oracle中的累计和?

Patricia Arquette
发布: 2024-11-02 20:30:03
原创
468 人浏览过

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学习者快速成长!