#974

Revenue Without Double Counting

The customer revenue report started overstating totals when an order has multiple line items. Count only payments with status = 'success', without multiplying them by product lines. Return id, name, and revenue; users with no successful payments get 0, sorted by id.

Buggy query
SELECT u.id, u.name, COALESCE(SUM(p.amount), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
LEFT JOIN order_items oi ON oi.order_id = o.id
LEFT JOIN payments p ON p.order_id = o.id AND p.status = 'success'
GROUP BY u.id, u.name
ORDER BY u.id;

Exemple de sortie attendue

Voici à quoi ressemble une réponse correcte — son nombre de lignes lui est propre, il n'a pas à correspondre aux tables du schéma.

idnamerevenue
1Alice73
2Bob0
3Carol6

Le résultat de votre requête apparaîtra ici