1.使用group by必须要配合使用聚合函数,例如sum,count,avg,max等
执行过程:
(1)先执行select返回一个程序集;
(2)根据group by后面的字段进行分组,将相同的分组字段数据并为一起,但是相同的分组字段合为一个,但是不同的字段还是多个,因此要用聚合函数把它们处理为一个数据;
2.在返回集字段中,要么就包含在group by后面,作为分组的依据;要么就要被包含在聚合函数中
3.where,group by,having
查询每一个班级中,年龄大于20,性别为男的人数
select count(*),classid from table where sex='男' group by classid,age having age>20
执行where查找符合条件的数据;使用group by 进行分组,用having去掉不符合条件的组
having---
having子句的每一个字段必须出现在select列表,oracle除外;
having和where都可以限制条件;
having限制的是组,而不是行。where子句中不能使用聚合函数,而having可以