Hier ist eine Methode zum Erstellen einer laufenden Summe ohne die Ineffizienz der Summierung aller vorherigen Zeilen. (Ich weiß, diese Frage 6 Jahre alt ist, aber es ist eine der ersten Google-Einträge für SQLite laufende Summe.)
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
Dies sollte nur einmal ausgeführt werden, nachdem alle Werte importieren. Oder setzen Sie die akkumulierte Spalte auf alle Nullen, bevor Sie sie erneut ausführen.
Hätte es an einer Tabelle ohne ID zum Ordnen funktioniert (oder nach einem anderen Kriterium, ohne Möglichkeit eines strikten
moala
Sie können dies mit einer analytischen Abfrage tun Wenn Sie Oracle verwenden, werden keine Self Joins benötigt, siehe http://www.orafaq.com/node/55. Leider unterstützt sqlte keine analytischen Abfragen. – TTT