如何在SQL中结合SUM函数与Join查询获取各客户总金额
解决SQL中JOIN结合SUM计算客户总金额的问题
正确的查询语句
SELECT customer.customer_id, customer.first_name, customer.last_name, SUM(payment.amount) AS total_amount FROM payment INNER JOIN customer ON customer.customer_id = payment.customer_id GROUP BY customer.customer_id, customer.first_name, customer.last_name ORDER BY total_amount DESC;
关键说明
- 用
SUM(payment.amount)对每个客户的所有消费金额求和,通过AS total_amount给结果列设置直观别名。 - GROUP BY规则:SELECT子句里的非聚合列(未被SUM/COUNT等函数包裹的列)必须全部出现在GROUP BY子句中,这是SQL的标准要求,也是你之前出现语法错误的核心原因。这里按
customer_id(客户唯一标识)、first_name、last_name分组,保证每个客户的基础信息和对应总金额一一匹配。 - 你原有的INNER JOIN逻辑保留,只会返回有消费记录的客户。如果需要统计所有客户(包括无消费的),可以把
INNER JOIN替换为LEFT JOIN,此时无消费客户的总金额会显示为NULL。
内容的提问来源于stack exchange,提问作者jr20
相关产品推荐
相关产品推荐

