ホームページ > データベース > mysql チュートリアル > Oracle でリセットしきい値を使用して条件付き SUM を計算する方法

Oracle でリセットしきい値を使用して条件付き SUM を計算する方法

Mary-Kate Olsen
リリース: 2024-10-31 17:22:30
オリジナル
993 人が閲覧しました

How to Calculate a Conditional SUM in Oracle with a Reset Threshold?

Oracle データベースの条件付き SUM

Oracle は、条件付き SUM 計算を含む、条件付き集計のための堅牢な機能を提供します。この記事では、このような SUM を実行するという課題に取り組みます。特定の要件があります。累積値が 15 を超えた場合はリセットします。

問題の説明

目的は、計算することです。一連の値に対する条件付き SUM。15 に達するかそれを超えると、SUM はゼロにリセットされます。この集計の結果、しきい値によって分割された一連の SUM が生成されます。

解決策: MODEL 句

再帰 SQL は実行可能なアプローチですが、SQL MODEL 句は可読性を高め、実行プロセスを合理化する代替手段を提供します。

<code class="sql">-- Create a table to represent the sample data
CREATE TABLE test_data ( sort_col VARCHAR2(1), addend NUMBER );
-- Insert sample data
INSERT INTO test_data (sort_col, addend) VALUES ('A', 3), ('B', 7), ('C', 6), ('D', 5), ('E', 9), ('F', 3), ('G', 8);

-- Begin the actual solution
WITH sorted_inputs AS (
  SELECT sort_col,
         ROW_NUMBER() OVER (ORDER BY sort_col) AS sort_order,
         addend,
         0 AS running_sum_max_15  -- Initialize running sum to zero
  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],  -- Set initial running sum to the first addend
  running_sum_max_15[sort_order > 1] =  -- Calculate running sum for subsequent rows
  CASE
    WHEN running_sum_max_15[CV(sort_order) - 1] < 15 THEN
      running_sum_max_15[CV(sort_order) - 1]  -- Continue running sum if below threshold
    ELSE
      0  -- Reset running sum if threshold is reached or exceeded
  END + addend[CV(sort_order)]  -- Add current addend to running sum
);</code>
ログイン後にコピー

結果

クエリは次の出力を生成します:

<code class="sql">+----------+--------+--------------------+
| 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 |
+----------+--------+--------------------+</code>
ログイン後にコピー

明らかなように、条件付き SUM は正しく計算され、累計は 15 に達した後に最初から始まります。

以上がOracle でリセットしきい値を使用して条件付き SUM を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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