SQL查询:如何筛选COUNT(*)别名TOTAL大于1的客户统计结果?
问题解决:筛选聚合总数大于1的SQL查询
你的问题出在WHERE子句的使用时机:WHERE是在分组(GROUP BY)之前过滤原始行的,这时候TOTAL这个聚合统计结果还没生成,所以没法用它来做判断。
要过滤分组后的聚合结果,得用HAVING子句,它专门用于对GROUP BY生成的分组结果进行条件筛选。
修正后的通用SQL代码:
SELECT P.Customer, COUNT(*) as TOTAL FROM Projects P GROUP BY P.Customer HAVING COUNT(*) > 1
部分数据库(如MySQL)支持直接使用别名筛选,写法如下:
SELECT P.Customer, COUNT(*) as TOTAL FROM Projects P GROUP BY P.Customer HAVING TOTAL > 1
核心区别:
- WHERE 负责过滤分组前的原始行
- HAVING 负责过滤分组后的聚合结果
内容的提问来源于stack exchange,提问作者Matthias Fasswald
相关产品推荐
相关产品推荐

