我正在尝试在 SQL 语句中进行计算。我正在尝试计算每个客户 invoice.total
列中的总金额。我创建了以下语句:
SELECT customers.firstname, customers.lastname, customers.status, SUM(invoice.total) AS total
FROM customers
INNER JOIN invoice
ON customers.id=invoice.id;
当我运行它时,我得到了表中的总金额。我在这张表中有 15 个不同的客户,但我只得到第一个客户的名字和所有客户的总金额。我做错了什么?
最佳答案
首先,当您想要获得聚合结果时,您需要对数据进行分组:
SELECT customers.firstname, customers.lastname, customers.status, SUM(invoice.total) AS total
FROM customers
INNER JOIN invoice
ON customers.id=invoice.id
GROUP BY customers.firstname, customers.lastname, customers.status;
其次,您确定您是通过正确的字段加入表格吗? invoice.id
列是否正确?我希望 invoice.id
成为表的主键,而我希望另一列用于外键,例如 invoice.customerid
。请仔细检查它是否正确。
更新:正如评论中提到的,如果您有两个具有相同名字、姓氏和状态的客户,数据将被错误分组。在这种情况下,您需要将唯一字段(例如 customers.id
)添加到 SELECT
和 GROUP BY
语句。
关于mysql - 使用内部连接在 SQL 中计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679684/