unGROUPING时SUM中的错误

时间:2012-12-21 13:20:02

标签: mysql sql group-by

我有一个查询,它返回来自客户的货件的SUM值,并按shipment_id分组。值是正确的。

SELECT SUM(DISTINCT((article.unit_price * article.tax)*shipment.amount)) as subtotal 
  FROM shipment 
 INNER JOIN customer ON customer.customer_id = shipment.customer_id 
 INNER JOIN article ON shipment.article_id = article.article_id 
 WHERE shipment.type_id = 2 
   AND shipment.customer_id = 947 
 GROUP BY shipment.shipment_id

当我删除GROUP BY以从客户获取总价值时,返回的值不正确。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您的联接有问题。我可以想到sum(distinct )在查询中没有意义的情况。您使用不正确。发生的事情是您在货件中有重复的物品,并且货物中的值是可以的(可能只是货件中的一件物品)。但是,不同的货物具有完全相同的物品和相同的数量。不同的删除了这样的重复。

解决方案很简单,只需删除distinct

即可
SELECT SUM((article.unit_price * article.tax)*shipment.amount) as subtotal 
FROM shipment INNER JOIN
     customer
     ON customer.customer_id = shipment.customer_id INNER JOIN
     article
     ON shipment.article_id = article.article_id 
WHERE shipment.type_id = 2 AND shipment.customer_id = 947