Menu
Coddy logo textTech

Нарастающий итог

Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 25 из 27.

Накопительный (кумулятивный) итог — это SUM в окне с ORDER BY: так агрегат превращается в значение, которое увеличивается от строки к строке.

SELECT day, amount,
       SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenue

Без ORDER BY окно охватывает каждую строку, и вы получите общий итог в каждой строке. С ним окно расширяется по одной строке за раз в этом порядке, поэтому каждая строка видит только себя и всё, что было до неё.

Добавьте PARTITION BY, чтобы сбрасывать running_total для каждой группы, например running_total для revenue по region изо дня в день.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • <strong>revenue</strong>: <strong>region</strong>, <strong>day</strong>, <strong>amount</strong>

Верните region, day, amount и region_running_total: совокупное значение amount для этого региона по этот день включительно. Накопительный итог должен сбрасываться для каждого региона.

Используйте PARTITION BY в оконной функции. Сортируйте по region, затем по day.

Попробуйте сами

SELECT region, day, amount,
       -- SUM(amount) OVER (PARTITION BY region ORDER BY day)
FROM revenue
ORDER BY region, day
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень

Потренируйтесь самостоятельно: Песочница SQL