Ниже вы увидите SQL-запрос, который успешно возвращает доход для данного продавца ... если только в одном из счетов этого продавца не было более одной успешной транзакции.В этом случае он будет суммировать доход каждого элемента счета с его количеством успешных транзакций.
Если бы я еще не присоединился к продавцам и не группировал по merchant.id, я бы сгруппировал по invoices.id
Когда вы задаете GROUP BY
несколько столбцов, он будет группировать только строки, которые одинаковы в обоих столбцах, в результате чего таблица будет менее сжатой, чем более сжатой.Есть ли способ выполнить что-то вроде второй группы по этому запросу, чтобы он не добавлял в доход элементы счета-фактуры более одного раза?
SELECT merchants.id,
sum(invoice_items.unit_price * invoice_items.quantity) as total_revenue FROM merchants
INNER JOIN invoices
ON invoices.merchant_id = merchants.id
INNER JOIN invoice_items
ON invoice_items.invoice_id = invoices.id
INNER JOIN transactions
ON transactions.invoice_id = invoices.id
WHERE transactions.result = "success"
AND merchants.id = ?
GROUP BY merchants.id;