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.

Semua pelajaran