Оконные функции

Смещение: LAG и LEAD

Содержание курса

0 / 1 баллов

Соседние продажи внутри категории

Для каждой строки sales верните sale_id, category, sale_month, amount, сумму предыдущей продажи той же категории как previous_amount, разницу с ней как amount_change и сумму следующей продажи как next_amount. Для первой продажи категории previous_amount должен быть 0, а для последней next_amount — 0. Используйте порядок sale_month, sale_id внутри каждой категории и отсортируйте результат по category, sale_month, sale_id.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Дополнительная подготовка SQLite
    INSERT INTO sales (sale_id, category, sale_month, amount) VALUES (1, 'Книги', '2026-01', 100), (2, 'Книги', '2026-02', 150), (3, 'Книги', '2026-03', 120), (4, 'Игры', '2026-01', 200), (5, 'Игры', '2026-02', 180);
    Ожидаемый результат SQLite
    4|Игры|2026-01|200|0|200|180
    5|Игры|2026-02|180|200|-20|0
    1|Книги|2026-01|100|0|100|150
    2|Книги|2026-02|150|100|50|120
    3|Книги|2026-03|120|150|-30|0
    
Практика SQLite 3

Запрос выполняется в изолированной SQLite-базе через Modal. Скрытые проверки могут добавлять свои строки перед запуском решения.

РешениеSQL · SQL / SQLite 3 (Modal)

Отправьте решение, чтобы увидеть результаты тестов.

Начать заново?

Помощник начнёт новый диалог по этой задаче. Текущая переписка останется в истории до конца срока хранения.

О переписке

Можно приложить до трёх фото PNG, JPEG или WebP по 5 МБ.

Переписка и фото хранятся 90 дней после последнего принятого сообщения. Преподаватель получит доступ к диалогу, когда вы попросите его помочь.

Проверка решения остаётся отдельным действием.