Сверка 240 доставок событий с воспроизводимым расчётом по бизнес-дню.
О проекте
Цель
Получить дневные суммы оплат и возвратов, которые можно связать с исходными событиями.
Задача
В наборе 240 доставок, но только 216 бизнес-событий. Суммирование строк завышает оборот, а группировка по дате загрузки переносит задержанные события на другой день.
Решение
Разделил ключ события, момент операции и момент доставки. Повторы исключаются по event_key; возврат учитывается отдельной операцией, бизнес-день вычисляется в московской временной зоне.
Результат
На приложенных данных: 216 уникальных событий, 24 повторные доставки, пять бизнес-дней и итог 195 060 ₽ после возвратов. SQL и расчёт страницы дают одинаковые дневные суммы.
Что передано заказчику
- Исходные события.csv
- Запрос сверки.sql
- Результат сверки.json
- Расчёт.cjs
Инструменты и подход
Инструменты
Навыки
Содержание 5
Открыть работу
Повтор доставки не означает новую оплату
В исходном CSV сохранены все 240 строк. Переключатель позволяет включить и выключить удаление повторов, поэтому разницу видно в самом расчёте. Каждое исключение связано с существующим event_key; исходная строка не исправляется вручную.
Операция и загрузка имеют разные даты
Второй переключатель меняет дату операции на дату загрузки. Обе даты приводятся к московскому бизнес-дню. Запоздавшая доставка меняет распределение по дням, но не общий итог периода. Отдельный SQL-запрос воспроизводит группировку по дате операции: результат можно проверить вне страницы.
Что изменилось
| Исходный вариант | Готовый вариант |
|---|---|
| 240 строк суммируются как независимые события | 216 событий после удаления 24 повторов |
| Дневной отчёт строится по дате загрузки | Оплаты и возвраты сгруппированы по московскому дню |
Файлы результата
Вклад и команда
Написал расчёт и SQL-запрос, сверил их результаты и собрал интерфейс для сравнения способов учёта.
Загружаем комментарии…