Как рассчитать текущую СУММ для запроса SQLite?

Используйте хорошие имена переменной и имена методов. Взломайте код в значимые части, которые выполняют определенные цели. Сохраните свои классы связными (все это сотрудничает), и отделенный (существует немного зависимостей между классами). Не повторяйте себя (DRY). Следуйте за Дядей Bob ТВЕРДЫЕ принципы (не законы, как он указывает ) до градуса, что они работают для создания кода лучше.

11
задан OMG Ponies 9 April 2011 в 17:23
поделиться

1 ответ

С 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) время.

2
ответ дан 3 December 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: