分组统计查询中的where和having有何区别
时间: 2024-03-08 17:50:30 浏览: 114
sql中的 where 、group by 和 having 用法解析
在分组统计查询中,WHERE和HAVING都可以用来筛选数据,但它们的作用范围不同。
WHERE子句用于在分组前对数据进行筛选,即先对数据进行WHERE条件的过滤,然后再进行分组统计。WHERE子句中的条件是对每一行记录进行判断的,只有满足条件的记录才能参与分组统计。
HAVING子句用于在分组后对分组结果进行筛选,即先进行分组统计,然后再对统计结果进行HAVING条件的过滤。HAVING子句中的条件是对分组后的结果进行判断的,只有满足条件的分组结果才会被返回。
举个例子,假设我们有一个表格存储了每个人的姓名和年龄,我们要统计每个年龄段的人数,同时只返回年龄段人数大于等于3的结果。那么查询语句如下:
```
SELECT age, COUNT(*) FROM table_name
WHERE age BETWEEN 20 AND 40
GROUP BY age
HAVING COUNT(*) >= 3;
```
在这个查询语句中,WHERE子句用于筛选年龄在20~40岁之间的记录,然后按年龄分组统计。最后,HAVING子句用于筛选分组后人数大于等于3的年龄段结果。
阅读全文