group By对数据进行分组,所谓分组就是将一个“数据集”划分为若干个“小区域”,然后针对若干个小区域进行数据处理。
数据表A
1、group by分组操作
例:select 类别,sum(数量) as 数量之和 from A group by 类别
使用group by的时候一定要对你想要操作的列写在group by之后
查询结果:
2、group by和order by的联合使用
例:select 类别,sum(数量) as 数量之和 from A group by 类别 order by sum(数量)
查询结果:
注意:在Access数据库中排序不能使用聚合函数别名“类别 order by 数量之和 ”,但是在SQL server中可以
3、group by和select指定字段限制
例:select 类别,sum(数量)as 数量之和,摘要 from A group by 类别 order by 类别 desc
查询结果: 出现错误
注意:这样写就会出现错误,因为select指定的字段group by并没有进行分组操作,
所以在用group by的时候select指定的字段要么写包含在group by语句后面,作为分组的依据,要么被包含的聚合函数中
4、group by和聚合函数
group by语句只中select指定的字段必须是“分组依据字段”,其他字段若想出现在select中,则必须包含在聚合函数中,常见的聚合函数如下表:
函数 | 作用 | 支持性 |
---|---|---|
sum(列名) | 求和 | |
max(列名) | 最大值 | |
min(列名) | 最小值 | |
avg(列名) | 平均值 | |
first(列名) | 第一条记录 | 仅Access支持 |
last(列名) | 最后一条记录 | 仅Access支持 |
count(列名) | 统计记录数 | 注意和count(*)的区别 |
例:求各组平均值
select 类别,avg(数量)as 平均值 from A group by 类别
求各组记录数目
select 类别,count(*) as 记录数 from group by 类别