先看一下我的表内容和数据,再做接下来的例子和讲解1.分组函数的基本用法
select 字段列表 from 表名 [WHERE 条件] group by 分组字段名 [HAVING 分组后的过滤条件]
2.先声明where和having的区别
1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
2.判断条件不同:where不能对聚合函数进行判断,而having可以。
注意
1.执行顺序:where > 聚合函数 > having
2.分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
例子:
1.根据性别分组,统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender;
2.根据性别分组,统计男性员工 和 女性平均年龄
select gender, avg(age) from emp group by gender;
3.查询年龄小于18的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。
select workaddress, count(*) from emp where age < 18 group by workaddress having count(*) >= 1;
最后附一张黑马程序员的教学截图、