Вычитание одной строки данных из другой в 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

Спасибо за помощь.

Ответы на вопрос(7)

Ваш ответ на вопрос