Я был озадачен каким-то 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
Спасибо за помощь.