SQL Dojo Beta
Trampa

Fan-out de un JOIN

Unir dos tablas uno-a-muchos multiplica las filas, y las sumas crecen con ellas.

Un pedido con 3 líneas y 2 pagos da 6 filas cuando se unen ambas: cada línea se cuenta dos veces. Agregue primero cada tabla hija a la granularidad del pedido y luego una los resultados.

La trampa

SELECT o.order_id, SUM(l.quantity * l.unit_price) AS ordered
FROM orders o
JOIN order_lines l ON l.order_id = o.order_id
JOIN payments p ON p.order_id = o.order_id
WHERE o.order_id = 14
GROUP BY o.order_id;
order_idordered
14235.00
Probarlo en Randori

La corrección

SELECT o.order_id, SUM(l.quantity * l.unit_price) AS ordered
FROM orders o
JOIN order_lines l ON l.order_id = o.order_id
WHERE o.order_id = 14
GROUP BY o.order_id;
order_idordered
14117.50
Probarlo en Randori