在此数据库中,我需要找到每个客户为某个类别的图书支付的总金额,然后按其客户ID对其进行排序。该代码似乎可以正确运行,但是尽管总的来说正确的行数还是正确的,但最终却多了大约20行。
客户ID是customer
的一部分,但不应出现在select
子句中,当我尝试和ORDER BY
时,会出现奇怪的错误。 DB引擎是DB2。
SELECT distinct customer.name, book.cat, sum(offer.price) AS COST
FROM offer
INNER JOIN purchase ON purchase.title=offer.title
INNER JOIN customer ON customer.cid=purchase.cid
INNER JOIN member ON member.cid=customer.cid
INNER JOIN book ON book.title=offer.title
WHERE
member.club=purchase.club
AND member.cid=purchase.cid AND purchase.club=offer.club
GROUP BY customer.name, book.cat;
答案 0 :(得分:1)
您应该修正join
条件,使其包含在where
子句中(表关系之间通常更适合on
子句)。
SELECT DISTINCT
对于GROUP BY
几乎是不合适的。
但这不是您的问题。您可以使用聚合函数:
GROUP BY customer.name, book.cat
ORDER BY MIN(customer.id)