Используйте хорошие имена переменной и имена методов. Взломайте код в значимые части, которые выполняют определенные цели. Сохраните свои классы связными (все это сотрудничает), и отделенный (существует немного зависимостей между классами). Не повторяйте себя (DRY). Следуйте за Дядей Bob ТВЕРДЫЕ принципы (не законы, как он указывает ) до градуса, что они работают для создания кода лучше.
С SQLite 3.25.0, с 15.09.2018, поддерживаются функции окна и их ключевое слово OVER
. Ответ на Ваш вопрос теперь легок:
SELECT Country, Gdp, SUM(Gdp) OVER (ROWS UNBOUNDED PRECEDING)
FROM CountryGdp;
Это - минимальный запрос, который делает то, что Вы запрашиваете, но он не определяет упорядочивания, таким образом, вот более надлежащий способ сделать его.
SELECT
Country,
Gdp,
SUM(Gdp) OVER (
ORDER BY Country -- Window ordering (not necessarily the same as result ordering!)
ROWS BETWEEN -- Window for the SUM includes these rows:
UNBOUNDED PRECEDING -- all rows before current one in window ordering
AND CURRENT ROW -- up to and including current row.
) AS RunningTotal
FROM CountryGdp
ORDER BY Country;
Всегда, запрос должен выполнить в O (N) время.