Oracle で条件に基づいて累積合計をリセットするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-02 20:30:03
オリジナル
507 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート