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, чтобы сбросить нарастающий итог для каждой группы, например, нарастающий итог выручки по регионам день за днем.

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.

Шпаргалка

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

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

Добавьте PARTITION BY, чтобы сбрасывать нарастающий итог для каждой группы:

SELECT region, day, amount,
       SUM(amount) OVER (PARTITION BY region ORDER BY day) AS region_running_total
FROM revenue
ORDER BY region, day

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

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

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

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