Her er en løsning uden variabler. Jeg antager, at du har dine initail-data i en tabel kaldet thetable
.
SELECT date, time, ip,
result - IFNULL( (
SELECT MAX( result )
FROM thetable
WHERE ip = t1.ip
AND ( date < t1.date
OR date = t1.date AND time < t1.time )
) , 0) AS diff
FROM thetable AS t1
ORDER BY ip, date, time
Her får vi den forrige værdi med et undervalg (det maksimale result
af de foregående tidsstempler fra den samme ip
). IFNULL
giver os et 0, hvis dette var den første værdi, så de første resultater vises korrekt.
Jeg anbefaler også at tilføje følgende indeks til thetable
:
CREATE INDEX sort1 ON thetable (ip, date, time);