Sie brauchen eine Möglichkeit, die Reihenfolge der Zeilen in score
zu bestimmen . Es gibt keine "natürliche Reihenfolge" in einer Tabelle in einer relationalen Datenbank. Ich gehe also davon aus, dass Sie eine id
haben (oder ein Zeitstempel oder so), um Ihre Aufzeichnungen zu ordnen. Oder ist i
garantiert in jeder neuen Reihe größer? Dann können Sie einfach per i
bestellen .
Die Abfrage selbst ist einfach – sobald Sie sich über das Fenster informiert haben Funktionen :
SELECT i - lag(i, 1, 0) OVER (ORDER BY id) AS result
FROM score
ORDER BY id;
Inklusive einer Verbesserung von @Clodoaldo (siehe Kommentar).
lag(i, 1, 0) OVER (ORDER BY id)
ist äquivalent zu, aber eleganter als:
COALESCE(lag(i) OVER (ORDER BY id), 0)
Zweck ist es, den Sonderfall der ersten Zeile abzudecken, die keine vorangehende Zeile hat.
Demo auf sqlfiddle.
sum(result)
ist trivial, weil es zwangsläufig gleich dem letzten i
ist nach deiner Beschreibung:
SELECT i
FROM score
ORDER BY id DESC
LIMIT 1;