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

SQL语句正确性验证:查询跨品类购买客户ID

SQL查询语句验证:获取购买过多品类产品的客户ID

需求明确

获取购买过不同品类产品的客户的customer_id

原查询的问题

原查询存在多处逻辑错误,无法满足需求:

  • 表别名错误:customer表未定义别名c,但关联条件中使用了c.customer_id,执行时会触发语法错误
  • 分组逻辑错误:按pc.product_category_id分组,最终结果会是每个品类对应的客户集合,而非按客户维度统计其购买的品类数量
  • Having条件无效:count(p.product_id)>0无筛选意义,关联后的结果只要存在购买记录,该值必然大于0,无法筛选出购买过多品类的客户

正确的查询语句

SELECT customer_id
FROM customer
JOIN Purchase_order po ON customer.customer_id = po.customer_id
JOIN order_product op ON po.order_id = op.order_id
JOIN product p ON op.product_id = p.product_id
JOIN product_category pc ON p.product_category_id = pc.product_category_id
GROUP BY customer_id
HAVING COUNT(DISTINCT pc.product_category_id) > 1;

关键逻辑说明

  • 修正表别名问题:直接使用customer表名关联,也可自行定义别名(如customer c)并统一使用
  • 分组维度调整:按customer_id分组,确保统计每个客户的购买品类情况
  • 品类统计方式:使用COUNT(DISTINCT pc.product_category_id)计算客户购买的不同品类数量,通过HAVING COUNT(...) > 1筛选出购买过至少两种不同品类产品的客户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:50:40