分组结果的二次过滤,HAVING 子句的用法还挺关键的。尤其是你在做那种“统计+筛选”需求时,比如统计不同城市、性别的会员数量,但只看人数多的,像大于 2 个的情况。WHERE就不行了,得靠HAVING出场。

城市的会员数据太杂?用Group By先按CitySex分组,再用Count(*)统计。关键来了——要剔除那些人数少的组,直接加一条HAVING Count(*) >= 2就行。嗯,写起来也不复杂:

SELECT City as 居住城市, Sex as 性别, Count(*) as 会员人数
FROM Customers
GROUP BY City, Sex
HAVING Count(*) >= 2

这里别搞混了,WHERE是对原始数据筛选,HAVING是对分组后的数据再过滤。顺序错了,SQL 直接报错。多初学者常掉这个坑。

对 SQL 逻辑还不太熟的,可以去看看下面这几个文章,讲得还挺清楚:

如果你刚开始接触 SQL 分组逻辑,或者老是记不住 WHERE 和 HAVING 的区别,这一类例子多练练,理解就快多了。