13、MYSQL语句group by、group by all和聚合函数的使用

阅读() @2018-01-07 22:20:25

一、GROUP BY概述:

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

二、基本数据表如下:

mysql中group by的数据表

三、GROUP BY的使用:

1、group by的使用场景:查找全班男女生各有多少人?

select sex,count(id) from think_test group by sex;

group by的使用场景:查找全班男女生各有多少人

2、group by和order by结合使用:查找全班男女生各有多少人并且升序排序?

select sex,count(sex)

group by和order by结合使用:查找全班男女生各有多少人并且升序排序

 from think_test group by sex order by count(sex);

3、Group By中Select指定的字段限制:

select sex,count(sex) as num sex from think_test group by sex;

执行以上sql语句会出错,截图如下:

group by中select指定字段的限制

原因是:在select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中

4、GROUP BY ALL多列分组的使用:

“多列分组”实际上就是就是按照多列(字段1+字段2)合并后的值进行分组。

SQL Server中虽然支持“group by all”,但Microsoft SQL Server 的未来版本中将删除 GROUP BY ALL,避免在新的开发工作中使用 GROUP BY ALL。Access中是不支持“Group By All”的,但Access中同样支持多列分组

比如查找某个班级中某个年龄的男女生各有多少?

select sex,age,count(id) from think_test group by sex,age;

group by查找某个班级中某个年龄的男女生各有多少

如果在window系统的sql命令行使用group by all,则会报错:

在window系统的sql命令行使用group by all,则会报错

5、group by与聚合函数:

group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:

group by和聚合函数的使用

比如:计算班里男女生的平均年龄:

select sex,avg(age) from think_test group by sex;

group by和avg计算班里男女生的平均年龄

微信二维码
锐壳主机