Potrzebujesz sposobu na określenie kolejności wierszy w score
. W tabeli w relacyjnej bazie danych nie ma „naturalnego porządku”. Zakładam więc, że masz id
(lub sygnaturę czasową lub coś w tym rodzaju), aby zamówić swoje rekordy. Czy też jest i
gwarantuje, że będzie większy w każdym nowym rzędzie? Następnie możesz po prostu zamówić przez i
.
Samo zapytanie jest proste - gdy dowiesz się o window funkcje :
SELECT i - lag(i, 1, 0) OVER (ORDER BY id) AS result
FROM score
ORDER BY id;
W tym ulepszenie @Clodoaldo (patrz komentarz).
lag(i, 1, 0) OVER (ORDER BY id)
jest równoważny, ale bardziej elegancki niż:
COALESCE(lag(i) OVER (ORDER BY id), 0)
Celem jest uwzględnienie szczególnego przypadku pierwszego wiersza, który nie ma poprzedzającego wiersza.
Demo na sqlfiddle.
sum(result)
jest trywialne, ponieważ jest związane z ostatnim i
zgodnie z twoim opisem:
SELECT i
FROM score
ORDER BY id DESC
LIMIT 1;