Anda memerlukan beberapa cara untuk menentukan urutan baris dalam score
. Tidak ada "tatanan alami" dalam tabel dalam database relasional. Jadi saya berasumsi Anda memiliki id
(atau stempel waktu atau sesuatu) untuk memesan catatan Anda. Atau i
dijamin lebih besar di setiap baris baru? Kemudian Anda bisa memesan dengan i
.
Kuerinya sendiri sederhana - setelah Anda mengetahui tentang window fungsi :
SELECT i - lag(i, 1, 0) OVER (ORDER BY id) AS result
FROM score
ORDER BY id;
Termasuk peningkatan oleh @Clodoaldo (lihat komentar).
lag(i, 1, 0) OVER (ORDER BY id)
setara dengan, tetapi lebih elegan dari:
COALESCE(lag(i) OVER (ORDER BY id), 0)
Tujuannya adalah untuk menutupi kasus khusus dari baris pertama yang tidak memiliki baris sebelumnya.
Demo di sqlfiddle.
sum(result)
sepele karena terikat sama dengan i
terakhir sesuai dengan deskripsi Anda:
SELECT i
FROM score
ORDER BY id DESC
LIMIT 1;