Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie setze ich eine kumulative Summe in Oracle basierend auf einer Bedingung zurück?

Patricia Arquette
Freigeben: 2024-11-02 20:30:03
Original
468 Leute haben es durchsucht

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

Bedingte Summierung in Oracle

In Oracle bezieht sich die bedingte Summierung auf die Durchführung einer kumulativen Summenoperation, während der akkumulierte Wert basierend auf einer angegebenen Bedingung zurückgesetzt wird . Mit dieser Technik können Sie Daten so manipulieren, dass die Summe bei Erreichen eines bestimmten Schwellenwerts auf einen bestimmten Wert zurückgesetzt wird.

Um dies zu erreichen, können Sie die SQL MODEL-Klausel nutzen. Mit dieser Klausel können Sie ein hierarchisches Datenmodell definieren und auf diesem Modell basierende Berechnungen angeben.

Betrachten Sie das folgende Beispiel, in dem Sie eine kumulative Summe berechnen möchten, die jedes Mal zurückgesetzt wird, wenn sie 15 überschreitet:

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)]
)
Nach dem Login kopieren

Ergebnisse:

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

Wie Sie sehen können, wird die laufende Summe auf 0 zurückgesetzt, nachdem 15 für die Zeilen „C“ und „F“ überschritten wurden. Dadurch können Sie eine bedingte Summierung basierend auf bestimmten Kriterien durchführen, die in Ihrer Abfrage definiert sind.

Das obige ist der detaillierte Inhalt vonWie setze ich eine kumulative Summe in Oracle basierend auf einer Bedingung zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!