Вычитание одной строки данных из другой в SQL
Я был озадачен каким-то SQL, где у меня есть несколько строк данных, и я хочу вычесть строку из предыдущей строки и повторить ее до конца.
Итак, вот таблица:
CREATE TABLE foo ( id, length )
INSERT INTO foo (id,length) VALUES(1,1090) INSERT INTO foo (id,length) VALUES(2,888) INSERT INTO foo (id,length) VALUES(3,545) INSERT INTO foo (id,length) VALUES(4,434) INSERT INTO foo (id,length) VALUES(5,45)
Я хочу, чтобы результаты показывали третий столбец, называемый разницей, который вычитает одну строку из приведенной ниже, а последняя строка вычитает из нуля.
+------+------------------------+ | id |length | difference | +------+------------------------+ | 1 | 1090 | 202 | | 2 | 888 | 343 | | 3 | 545 | 111 | | 4 | 434 | 389 | | 5 | 45 | 45 |
Я пробовал самостоятельное объединение, но я не совсем уверен, как ограничить результаты, вместо того, чтобы циклически проходить через него. Я не могу полагать, что значение идентификатора будет последовательным для данного набора результатов, поэтому я не использую это значение. Я мог бы расширить схему, чтобы включить какое-то последовательное значение.
Вот что я пробовал:
SELECT id, f.length, f2.length, (f.length - f2.length) AS difference FROM foo f, foo f2
Спасибо за помощь.