Aqui está uma solução sem variáveis. Suponho que você tenha seus dados iniciais em uma tabela chamada
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
Aqui obtemos o valor anterior com uma subseleção (o máximo
result
dos timestamps anteriores do mesmo ip
). IFNULL
nos dá um 0 se este for o primeiro valor, então os resultados iniciais são exibidos corretamente. Também recomendo adicionar o seguinte índice à
thetable
:CREATE INDEX sort1 ON thetable (ip, date, time);