group by分组语法

这篇来学习group by字句。Group by就是分组的意思,根据某个字段进行分组。

基本语法:group by 字段名;

使用前面的学生表,我们来进行练习

举例:根据性别分组
在这里插入图片描述
根据上面显示,我们使用了分组语句,结果出现了数据丢失的情况。分组之后男和女只显示一条数据。

在SQL中分组是为了统计数据,SQL提供了一系列统计函数供我们使用。

  1.  Count(): 统计分组后的记录数,每一组有多少记录
    
  2.  Max(): 统计每组中最大值
    
  3.  Min(): 统计最小值
    
  4.  Avg(): 统计平均值。
    
  5.  Sum(): 统计和
    

举例:分组统计:身高高矮,年龄平均和总年龄
在这里插入图片描述
上面表显示男和女各有2个,男里面最高175,女里面最高165,还有后面的平均年龄和最矮身高。所以,如果你在SQL语句中使用了group by,但是没有用到上面函数的一个或者几个,那么分组就没有意义,就想我们文章开头查询的结果。

Count函数

Count函数里面可以使用两种参数:*代表统计记录,字段名代表统计对应字段(Null不统计)。

举例: 下面我们先准备一个字段为null,例如把其中一个学生age设置值为null。
在这里插入图片描述
然后分别用count(*)和count(age)分组查询进行对比。
在这里插入图片描述
由于我们之前把lily这个女性的age设置成null,所以count(age)在女性分组里的统计数显示为1.

分组会自动根据分组字段排序,默认升序。

基本语法:group by 字段[ase 或者 desc];-- 效果是对分组的结果合并后进行排序
在这里插入图片描述
默认female排序在前,升序这里当然是安装字母顺序,desc表示降序,效果就是男性在前,女性在后。

多字段分组
为了演示效果,我们给当前学生表新增一个班级字段,效果如下。
在这里插入图片描述
下面先按照班级,然后按照性别进行分组
在这里插入图片描述
上面可以看到java01班级有一个女,有一个男,java02班有一个女,也有一个男。这种情况可以实现,每个班级有多少个女和多少个男的统计。那么可不可以统计,每个班级女的和男的叫什么。
在这里插入图片描述
这里有一个函数,叫group_concat(字段),效果就像上面那样。

猜你喜欢

转载自blog.csdn.net/weixin_38023156/article/details/89374006