MySQL Window Functions: Laufende Summen ohne Gruppierung

  • 04 Sep 2025
  • CODLAB Team
  • 2 min

Window Functions berechnen Werte über mehrere Zeilen, ohne diese wie eine normale Gruppierung zu einer einzigen Ergebniszeile zusammenzufassen. Das ist beispielsweise für laufende Summen hilfreich: Jeder Verkauf bleibt sichtbar und erhält zusätzlich den bis dahin berechneten Gesamtwert.

Eine laufende Summe berechnen

Das Beispiel verwendet fiktive Verkaufswerte. Sie können es in einer MySQL-Testdatenbank ausführen, die Window Functions unterstützt. Der ausdrücklich genannte Fensterrahmen berechnet die Summe vom Anfang bis zur aktuellen Zeile.

-- Erstellung der Beispieltabelle 'verkaeufe'
CREATE TABLE verkaeufe (
  datum DATE,
  verkauf INT
);

-- Einfügen von Beispieldaten
INSERT INTO verkaeufe (datum, verkauf) VALUES
('2021-01-01', 100),
('2021-01-02', 150),
('2021-01-03', 200);

-- Berechnung der laufenden Summe mit einer Window Function
SELECT datum,
       verkauf,
       SUM(verkauf) OVER (ORDER BY datum ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS laufende_summe
FROM verkaeufe;

Die Reihenfolge eindeutig machen

Die Beispieldaten enthalten pro Datum nur eine Zeile. In einem realen Bestand können mehrere Verkäufe dasselbe Datum haben. Wenn deren Reihenfolge für das Ergebnis wichtig ist, benötigen Sie einen zusätzlichen eindeutigen Sortierschlüssel. Legen Sie fest, ob Sie einzelne Verkäufe oder zunächst eine Summe pro Tag auswerten möchten.

Der Fensterrahmen und die Sortierung innerhalb von OVER beschreiben die Berechnung. Eine abschließende Sortierung der ausgegebenen Zeilen ist eine eigene Entscheidung. Verlassen Sie sich nicht auf eine zufällige Reihenfolge des Ergebnisses.

Gruppen und fachliche Bedeutung prüfen

Mit einer Partition können Sie getrennte Berechnungen etwa pro Geschäftsstelle oder Produkt vornehmen. Prüfen Sie davor, welche Zeilen zusammengehören und wie Sie Stornierungen oder fehlende Werte behandeln. Eine technisch korrekte Summe kann sonst eine andere Frage beantworten als die gewünschte Auswertung.

Testen Sie mindestens mehrere Zeilen mit gleichem Datum, unterschiedliche Gruppen und einen leeren Bestand. Bei großen Datenmengen sollten Sie außerdem den Ausführungsplan und die Laufzeit prüfen. Aus den kleinen Beispieldaten ergibt sich keine Aussage über die Leistungsfähigkeit Ihrer Datenbank.

Weiterführende Dokumentation: MySQL: Window Functions.

Teilen Sie diesen Artikel

Kunden

Noch keine Kommentare. Schreiben Sie den ersten!

Einen Kommentar hinterlassen

Wird nicht veröffentlicht

Verwandte Artikel

Projekt im Kopf?

Wir entwickeln maßgeschneiderte Software und KI-Lösungen. Lassen Sie uns gemeinsam Ihr nächstes Projekt starten.

Kostenloses Erstgespräch