Pelajaran 37 / 37 · Debugging
Studi kasus: total pendapatan terlalu besar
Ini bug yang sering terjadi. Join ke order_items melipatgandakan setiap pesanan sebanyak jumlah itemnya, sehingga SUM menghitung amount pesanan sekali untuk setiap item. dequery menandainya di langkah AGGREGATE.
Query-nya
SELECT c.name, sum(o.amount) AS revenue
FROM customers c
JOIN orders o ON o.customer_id = c.id
JOIN order_items i ON i.order_id = o.id
WHERE o.status = 'paid'
GROUP BY c.name
ORDER BY revenue DESC
Perbaiki: hapus join ke order_items, yang memang tidak dibutuhkan query ini, dan pendapatan Chen turun dari 442 menjadi 221, satu pesanan paid-nya dihitung sekali. Kalau itemnya dibutuhkan, lakukan agregasi pesanan sebelum join.