SQL高级操作之四—查询数据精讲之三(group by + having +orderby)

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 规则;

猜你喜欢

转载自blog.csdn.net/JavaCoder_juejue/article/details/83033563
今日推荐