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

如何用SQL统计客户购买的不同产品类型数量(含错误SQL修正)

错误分析
  • 使用UNION逻辑错误:UNION要求合并的两个查询必须列数一致、对应列数据类型匹配,你的两个查询分别返回单一列(客户ID、计数),无法通过UNION得到“每个客户对应购买数量”的关联结果。
  • 语法错误:customer_id = c.customer id存在空格笔误,正确写法应为c.customer_id。
  • 表关联缺失:未将customer_table与purchase_table做关联匹配,无法对应到每个客户的购买记录。
正确SQL实现

方式一:左连接+分组统计(推荐,包含无购买记录的客户)

SELECT 
    c.customer_id,
    COUNT(DISTINCT p.product_id) AS distinct_product_count
FROM 
    customer_table c
LEFT JOIN 
    purchase_table p ON c.customer_id = p.customer_id
GROUP BY 
    c.customer_id;
  • LEFT JOIN保证所有客户都会被返回,无购买记录的客户计数为0。
  • COUNT(DISTINCT p.product_id)用于统计每个客户购买的不同产品数量,DISTINCT可剔除同一产品的重复购买记录。

方式二:关联子查询

SELECT 
    c.customer_id,
    COALESCE((SELECT COUNT(DISTINCT product_id) 
              FROM purchase_table p 
              WHERE p.customer_id = c.customer_id), 0) AS distinct_product_count
FROM 
    customer_table c;
  • 子查询针对每个客户单独统计购买的不同产品数量,COALESCE函数将无购买记录客户的NULL结果转为0。

内容的提问来源于stack exchange,提问作者Michael Xia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:31:06