Soustraction d'une ligne de données d'une autre dans SQL

J'ai été perplexe avec certains SQL où j'ai plusieurs lignes de données, et je veux en supprimer une ligne de la rangée précédente et de l'avoir répéter tout le chemin vers le bas.

Voici donc le tableau:

CREATE TABLE foo ( 
id, 
longueur 
)
INSERT INTO foo (id,longueur) VALUES(1,1090) 
INSERT INTO foo (id,longueur) VALUES(2,888) 
INSERT INTO foo (id,longueur) VALEURS(sur 3545) 
INSERT INTO foo (id,longueur) VALUES(4,434) 
INSERT INTO foo (id,longueur) VALUES(5,45)

Je veux les résultats pour afficher une troisième colonne appelée différence qui est une ligne à soustraire de celui-ci avec la dernière rangée de la soustraction à partir de zéro.

+------+------------------------+ 
| id |longueur | différence | 
+------+------------------------+ 
| 1 | 1090 | 202 | 
| 2 | 888 | 343 | 
| 3 | 545 | 111 | 
| 4 | 434 | 389 | 
| 5 | 45 | 45 |

J'ai essayé une auto-jointure mais je ne suis pas exactement sûr de savoir comment limiter les résultats au lieu de la faire défiler. Je ne peut pas dépendre que de la valeur de l'id sera séquentielle pour un résultat donné, donc je ne suis pas en utilisant cette valeur. Je pourrais étendre le schéma d'inclure une sorte de valeur séquentielle.

C'est ce que j'ai essayé:

SELECT id, f.longueur, f2.la longueur, (f.longueur - f2.la longueur) QUE la différence 
DE foo f, foo f2

Merci à vous pour l'aider.

source d'informationauteur Doc Falken