Накопительная сумма

Есть цифры, которые сами по себе не информативны.А есть цифры, которые показывают путь.

Накопительная сумма - это как раз про путь.

Обсудим сегодня эту тему.

Накопительная сумма

А пока подписывайся на мой канал На связи: SQL Там я публикую посты про особенности и нюансы SQL. Этот канал про то, как не бояться баз данных, понимать, что такое JOIN, GROUP BY и почему NULL ≠ 0. Его я веду с нуля подписчиков. Присоединяйся!

Накопительная сумма — это когда мы каждый следующий показатель прибавляем к предыдущим, чтобы увидеть не «что было сегодня», а что получилось к этому моменту.

Если очень по-человечески:

Сегодня + вчера + позавчера + всё, что было раньше.

В SQL это часто называют:

  • running total
  • cumulative sum

Простой пример из жизни

Ты копишь деньги.

Накопительная сумма

Сам по себе столбец «Отложила» — это просто факты.
А вот накопительная сумма отвечает на другой вопрос:

Сколько денег у меня есть к каждому дню?

Накопительная сумма

Именно этот столбец обычно хотят видеть бизнес и пользователи.

Где применяется накопительная сумма

На практике — почти везде:

  • 💰 финансы:
    доход, расходы, прибыль с начала месяца / года
  • 📦 склад:
    остатки товаров
  • 📊 аналитика продуктов:
    рост пользователей, регистраций, подписок
  • 📈 KPI и планы:
    выполнение плана «на текущий момент»
  • 🕰 временные ряды:
    динамика показателей во времени

Очень часто без накопительной суммы график просто не имеет смысла.

Как считается накопительная сумма в SQL

Современный и правильный способ — оконные функции.

Пример:

SELECT date, amount, SUM(amount) OVER (ORDER BY date) AS running_total FROM sales;

Что здесь происходит:

  • SUM(amount) — считаем сумму
  • OVER (...) — говорим: не по всей таблице сразу
  • ORDER BY date — накапливаем по времени

Результат:

  • первая строка → просто значение
  • каждая следующая → сумма всех предыдущих + текущая

Если нужно накапливать отдельно (по группам)

Например, по каждому клиенту:

SUM(amount) OVER ( PARTITION BY customer_id ORDER BY date )

Теперь у каждого клиента своя накопительная сумма, и они не мешают друг другу.

Примеры задач и важные моменты с NULL публикую в своем канале На связи: SQL. Подписывайся и изучай новую информацию

Начать дискуссию