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