使用Inner Join在SQL中计算

时间:2016-02-28 06:51:57

标签: mysql sql

我试图在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个不同的客户,但我只得到第一个客户的名称和所有客户的总数。我做错了什么?

4 个答案:

答案 0 :(得分:2)

您必须按客户添加组(例如,id属性)。如果您想在名字中使用姓氏,那么您也必须按照他们进行分组。

答案 1 :(得分:2)

首先,您需要在想要汇总结果时对数据进行分组:

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.idSELECT语句添加唯一字段(例如GROUP BY)。

答案 2 :(得分:1)

在查询中使用group by子句,或者您可以使用公用表表达式来获取客户的记录总和,然后使用customer table进行内部联接。

答案 3 :(得分:1)

您需要在查询中添加分组依据。