В таблице
orders у заказа №42 сумма 1000 ₽. У него две строки в order_items и два события в payments. Аналитик собирает отчёт:SELECT o.id, SUM(o.total) AS revenueFROM orders oJOIN order_items i ON i.order_id = o.idJOIN payments p ON p.order_id = o.idGROUP BY o.id;Для заказа №42 отчёт показывает 4000 ₽. В таблице
orders одна строка, сумма там правильная. Ни одна таблица не содержит дублей по своему первичному ключу.Почему получилось именно 4000 ₽?
👀 -
SUM складывает значение total дважды: один раз до JOIN и ещё раз после🔥- два
JOIN создали четыре строки: 2 товара × 2 платежа🤔- база округлила сумму из-за разных типов данных в таблицах
Ставь реакцию. Разбор и правильный запрос — в следующий понедельник.