Voici une méthode pour créer un total cumulé sans l'inefficacité de la somme de toutes les lignes précédentes. (Je sais que cette question est de 6 ans, mais il est l'une des premières entrées de Google pour un total de fonctionnement SQLite.)
create table t1 (value integer, accumulated integer, id integer primary key);
insert into t1 (value) values (1);
insert into t1 (value) values (3);
insert into t1 (value) values (13);
insert into t1 (value) values (1);
insert into t1 (value) values (5);
UPDATE
t1
SET
accumulated = ifnull(
(
SELECT
ifnull(accumulated,0)
FROM
t1 ROWPRIOR
WHERE
ROWPRIOR.id = (t1.id -1)),0) + value;
.headers on
select * from t1;
value|accumulated|id
1|1|1
3|4|2
13|17|3
1|18|4
5|23|5
Cela ne doit être exécuté une fois après l'importation de toutes les valeurs. Ou, définissez la colonne accumulée sur toutes les valeurs null avant de l'exécuter à nouveau.
Si cela avait fonctionné sur une table sans identifiant pour commander (ou commander après un autre critère, sans possibilité de strict
moala
Vous pouvez faire cela avec une requête analytique Lorsque vous utilisez Oracle, aucune auto-joint n'est nécessaire, voir http://www.orafaq.com/node/55. Malheureusement sqlte ne supporte pas les requêtes analytiques. – TTT