Group by子句
Group by表示分组的含义:根据指定的字段,将数据进行分组:分组的目标是为了统计
分组统计(画重点:group by 就是用于分组的)
基本语法: group by 字段名;
Group by是为了分组后进行数据统计的,如果只是想看数据显示,那么group by没什么含义:group by将数据按照指定的字段分组之后,只会保留每组的第一条记录。
利用一些统计函数:(聚合函数)
count():统计每组中的数量,如果统计目标是字段,那么不统计为空NULL字段,如果为*那么代表统计记录
avg():求平均值
sum():求和
max():求最大值
min():求最小值
Group_concat():为了将分组中指定的字段进行合并(字符串拼接)
多分组
将数据按照某个字段进行分组之后,对已经分组的数据进行再次分组
基本语法:group by 字段1,字段2; //先按照字段1进行排序,之后将结果再按照字段2进行排序,以此类推。
Having子句
Having的本质和where一样,是用来进行数据条件筛选。
1、 Having是在group by子句之后:可以针对分组数据进行统计筛选,但是where不行
查询班级人数大于等于4个以上的班级
Where不能使用聚合函数:聚合函数是用在group by分组的时候,where已经运行完毕
Having在group by分组之后,可以使用聚合函数或者字段别名(where是从表中取出数
据,别名是在数据进入到内存之后才有的)
强调:having是在group by之后,group by是在where之后:where的时候表示将数据从磁盘拿到
内存,where之后的所有操作都是内存操作。
Order by子句
Order by排序:根据校对规则对数据进行排序
基本语法:order by 字段 [asc|desc]; //asc升序,默认的
Order by也可以像group by一样进行多字段排序:先按照第一个字段进行排序,然后再按照第二个字段进行排序。
Order by 字段1 规则,字段2 规则;