我试图在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个不同的客户,但我只得到第一个客户的名称和所有客户的总数。我做错了什么?
答案 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.id
和SELECT
语句添加唯一字段(例如GROUP BY
)。
答案 2 :(得分:1)
在查询中使用group by子句,或者您可以使用公用表表达式来获取客户的记录总和,然后使用customer table进行内部联接。
答案 3 :(得分:1)
您需要在查询中添加分组依据。