Wie berechne ich eine laufende SUM für eine SQLite-Abfrage?

8

Wie bekomme ich eine Spalte, die die Summe aller Werte vor einer anderen Spalte ist?

    
Hugo 09.04.2011, 17:19
quelle

3 Antworten

8

Sie können es tun, indem Sie die Tabelle mit sich selbst verbinden (indem Sie einen sogenannten Cartesian oder Cross-Join ausführen). . Siehe das folgende Beispiel.

%Vor%

Wenn Sie eine Tabelle mit Ländern und deren BIP pro Kopf angeben, erhalten Sie eine laufende Summe der BIP-Zahlen.

%Vor%

Beachten Sie, dass dies eine sehr ressourcenintensive Operation sein kann, da eine Tabelle mit N-Elementen eine temporäre Tabelle mit N * N-Elementen erstellt. Ich würde es nicht auf einem großen Tisch ausführen.

    
Diomidis Spinellis 09.04.2011, 17:34
quelle
1

Cross-Join-Lösungen wie Diomidis Spinellis vorgeschlagen haben, nehmen Sie O (N ^ 2) Zeit. Ein rekursiver CTE kann schneller arbeiten, wenn Sie den verschachtelten Code verschlingen können.

Dies erzeugt dieselbe Ausgabe wie seine.

%Vor%

Sortierung und Vergleiche sorgen für Duplikate, COALESCE ignoriert NULL.

Wenn Sie einen guten Index haben, sollte dies O (N log N) sein. Da SQLite keine Cursor unterstützt, existiert wahrscheinlich keine O (N) -Lösung, ohne auf eine externe Anwendung angewiesen zu sein.

    
relatively_random 08.12.2017 17:58
quelle
-1

Sie müssen eine Summe in das gewünschte Feld eingeben .... Die Abfrage hängt von der verwendeten Datenbank ab. Oracle ermöglicht dies:

%Vor%     
Andre 09.04.2011 17:38
quelle

Tags und Links