Если вы используете современную версию sqlite (3.25 или новее; тривиально убедиться, что вы используете C и можете просто включить источник sqlite непосредственно в ваш проект), это легко сделать с помощью оконной функции lead()
.Что-то вроде:
SELECT sum(value)
FROM (SELECT value, lead(value, 1) OVER (ORDER BY id) AS next_val FROM sim_stats)
WHERE next_val = 0;
(OP отредактировал сообщение, чтобы сделать это неуместным, но оставив его для дальнейшего использования для тех, кто наткнется на него)
Вам действительно нужен способуказать порядок строк;без этого строки возвращаются в произвольном порядке, который может отличаться от порядка, в котором они были вставлены в таблицу, в зависимости от точного запроса, используемых индексов, конфигурации базы данных и т. д. Выясните это (временные метки работают хорошо, или, может быть, AUTOINCREMENT
целое числопервичный ключ) и используйте его вместо ordered_term
.