一、GROUP BY概述:
“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。
二、基本数据表如下:
三、GROUP BY的使用:
1、group by的使用场景:查找全班男女生各有多少人?
1select sex,count(id) from think_test group bysex; |
2、group by和order by结合使用:查找全班男女生各有多少人并且升序排序?
1select sex,count(sex) 1from think_test group by sex order by count(sex); |
3、Group By中Select指定的字段限制:
1select sex,count(sex) as num sex from think_test group bysex; |
执行以上sql语句会出错,截图如下:
原因是:在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中同样支持多列分组。
比如查找某个班级中某个年龄的男女生各有多少?
1select sex,age,count(id) from think_test group bysex,age; |
如果在window系统的sql命令行使用group by all,则会报错:
5、group by与聚合函数:
group by语句中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中则必须包含在聚合函数中,常见的聚合函数如下表:
比如:计算班里男女生的平均年龄:
1select sex,avg(age) from think_test group bysex; |