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

Northwind数据库Employees表SQL查询问题:无法筛选含至少2名销售代表的城市并统计排序

解决Northwind Employees表销售代表城市筛选问题

嘿,我明白你遇到的麻烦了——想要找出至少有2名销售代表的城市,结果却把所有有销售代表的城市都列出来了,对吧?这其实是个很常见的SQL新手坑,问题出在分组后筛选的逻辑用错了子句。

问题根源

你大概率是用了WHERE子句来筛选聚合后的数量(比如WHERE COUNT(*) >=2),但WHERE是在分组之前过滤行数据的,这时候聚合结果还没生成,根本没法用它来筛选分组后的数量。我们需要的是在分组完成后,对聚合结果进行筛选,这时候得用HAVING子句。

正确的SQL代码

针对Northwind的Employees表,假设销售代表的职位字段是JobTitle(值为'Sales Representative'),正确的查询应该是这样:

SELECT City, COUNT(*) AS SalesRepCount
FROM Employees
-- 先筛选出所有销售代表,减少分组前的数据量
WHERE JobTitle = 'Sales Representative'
-- 按城市分组,统计每个城市的销售代表数量
GROUP BY City
-- 关键:分组后只保留数量≥2的城市
HAVING COUNT(*) >= 2
-- 按销售代表数量排序,DESC是降序,ASC是升序,可按需调整
ORDER BY SalesRepCount DESC;

代码逐行解释

  • WHERE JobTitle = 'Sales Representative':先把非销售代表的员工排除在外,只处理我们关心的群体,也能提升查询效率。
  • GROUP BY City:按照城市对筛选后的员工进行分组,为后续统计做准备。
  • HAVING COUNT(*) >= 2:这是解决你问题的核心!它会在分组完成后,只保留那些销售代表数量≥2的城市分组,完美实现你的需求。
  • ORDER BY SalesRepCount DESC:最后按照每个城市的销售代表数量从多到少排序,方便查看结果。

如果你的职位字段名称或者值有差异,只需要调整WHERE子句里的条件就行啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:49:04