>  기사  >  데이터 베이스  >  조건에 따라 Oracle의 누적 합계를 재설정하는 방법은 무엇입니까?

조건에 따라 Oracle의 누적 합계를 재설정하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 20:30:03461검색

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

오라클의 조건부 합산

오라클에서 조건부 합산은 특정 조건에 따라 누적된 값을 재설정하면서 누적 합계 연산을 수행하는 것을 의미합니다. . 이 기술을 사용하면 특정 임계값을 충족하면 합계가 특정 값으로 재설정되는 방식으로 데이터를 조작할 수 있습니다.

이를 달성하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.