Трябва ви някакъв начин да определите последователността от редове в score . Няма "естествен ред" в таблица в релационна база данни. Така че предполагам, че имате id (или клеймо за време или нещо подобно), по които да подредите записите си. Или е i гарантирано ще бъде по-голям във всеки нов ред? След това можете просто да поръчате чрез i .
Самата заявка е проста - след като разберете за window функциите :
SELECT i - lag(i, 1, 0) OVER (ORDER BY id) AS result
FROM score
ORDER BY id;
Включително подобрение от @Clodoaldo (вижте коментара).
lag(i, 1, 0) OVER (ORDER BY id)
е еквивалентен на, но по-елегантен от:
COALESCE(lag(i) OVER (ORDER BY id), 0)
Целта е да се покрие специалният случай на първия ред, който няма предходен ред.
Демо на sqlfiddle.
sum(result) е тривиално, защото е обвързано да е равно на последното i според вашето описание:
SELECT i
FROM score
ORDER BY id DESC
LIMIT 1;