一.分组函数:
select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having 分组后条件过滤];
以这个表为例
二.eg.
1.查询男同学女同学各自的数学平均分
SELECT sex,AVG(math) from wanfeng2 GROUP BY sex;
注意:分组之后,查询的字段为聚合函数和分组字段(一整个,例如性别),查询其他字段无任何意义
2.查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分不参与分组
SELECT sex,AVG(math),COUNT(*) from wanfeng2 where math > 70 GROUP BY sex;
3..查询男同学和女同学各自的数学平均分,以及各自的人数,要求:分数低于70分不参与分组,分组之后的人数大于2个的
SELECT sex,AVG(math),COUNT(*) from wanfeng2 where math > 70 GROUP BY sex HAVING COUNT(*)>2;
**where和having的区别:
1.执行时机不一样,where是分组前进行限定,不满足where条件不参与分组,而having是分组后对结果进行过滤
2.可判断的条件不一样,where不能对聚合函数进行判断,having可以( HAVING COUNT(*)>2;)
**执行顺序:where > 聚合函数 > having