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

Northwind数据库MySQL查询:统计至少2位不同客户订购的产品及客户数

MySQL查询语句修正方案

原SQL存在的问题

  • JOIN语法错误:join order details oon 缺少空格,应为表别名o后接关联关键字on
  • 第二个表关联错误:Orders表关联时误用WHERE指定关联条件,应使用ON
  • 客户计数未去重:直接使用count(CustomerId)会重复统计同一客户的多次订购记录,需用DISTINCT去重
  • 多余过滤条件:Quantity>=2不符合需求,需求是至少2位不同客户订购,不是单次订购数量≥2
  • 缺少分组后过滤条件:没有用HAVING筛选出满足「不同客户数≥2」的分组结果

修正后的SQL

SELECT 
    p.ProductID,
    p.ProductName,
    COUNT(DISTINCT kk.CustomerId) AS distinct_customer_count
FROM Products p  
INNER JOIN `order details` o 
    ON p.ProductID = o.ProductID
INNER JOIN Orders kk 
    ON kk.OrderID = o.OrderID
GROUP BY p.ProductID, p.ProductName
HAVING distinct_customer_count >= 2
ORDER BY p.ProductID;

关键逻辑说明

  • 用COUNT(DISTINCT kk.CustomerId)保证同一个客户多次订购同一产品时仅计数1次
  • 分组后通过HAVING子句过滤,仅保留有至少2位不同客户订购的产品
  • GROUP BY同时包含ProductID和ProductName符合MySQL的ONLY_FULL_GROUP_BY模式规范,避免语法报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:36:03