You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL JOIN与SUM查询问题:获取客户ID、姓名及购买总量

解决JOIN+SUM的SQL查询问题

首先纠正你现有查询的一个错误:Client表中没有first_name字段,对应的是name,这是基础字段匹配问题。

要实现每个客户的ID、姓名及购买总数量,需要结合聚合函数SUM()和分组GROUP BY,以下分两种场景给出解决方案:

场景1:仅展示有下单记录的客户

使用INNER JOIN关联客户和订单表,对每个客户的units_sold求和,同时按客户ID和姓名分组:

SELECT 
    c.client_id, 
    c.name,
    SUM(o.units_sold) AS total_units_purchased
FROM client c
INNER JOIN orders o ON o.client_id = c.client_id
GROUP BY c.client_id, c.name;

执行结果:

client_idnametotal_units_purchased
3Rose20
4Laura30
5Samuel18

场景2:展示所有客户(含未下单的客户)

如果需要包含Frank、Emile这类没有下单记录的客户,改用LEFT JOIN,并通过COALESCE()将求和结果的NULL转为0:

SELECT 
    c.client_id, 
    c.name,
    COALESCE(SUM(o.units_sold), 0) AS total_units_purchased
FROM client c
LEFT JOIN orders o ON o.client_id = c.client_id
GROUP BY c.client_id, c.name;

执行结果:

client_idnametotal_units_purchased
1Frank0
2Emile0
3Rose20
4Laura30
5Samuel18

你之前添加SUM后报错的原因

  • 字段名错误:误用first_name代替name,导致字段不存在;
  • 缺少分组:聚合函数SUM()需要搭配GROUP BY指定分组维度(客户ID和姓名),否则数据库无法确定按什么维度求和,会出现字段与聚合结果不匹配的错误。

内容的提问来源于stack exchange,提问作者Emilio Parra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:35:24