Вступить в клуб →
средняявопросSQL и проверка данных

Сумма заказа в выгрузке больше, чем в интерфейсе, ровно кратно числу позиций

Вы сверяете суммы заказов запросом:

SELECT o.id, SUM(o.amount) AS total
FROM orders o
JOIN order_items i ON i.order_id = o.id
GROUP BY o.id;

У заказов с одной позицией суммы сходятся с интерфейсом. У заказа с тремя позициями сумма в выгрузке ровно втрое больше, чем на экране.

Что произошло?

  • Соединение размножило строку заказа по числу позиций, и SUM сложил одну и ту же сумму трижды
  • В таблице позиций лежат дубли, данные испорчены и нужно заводить дефект на целостность
  • Группировка по o.id некорректна, для сумм по заказу нужно группировать по идентификатору позиции
  • Функция SUM неточно работает с денежными типами, накопленная погрешность растёт с числом строк

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела