可以根据需要将查询到的结果集信息划分为较小的组,用 GROUP BY 子句实现。
一、Group by语法
GROUP BY 子句:GROUP BY 子句可以把表中的行划分为组。然后可以用组函数返 回每一组的摘要信息。
二、 使用分组原则
如果在 SELECT 子句中包含了组函数,就不能选择单独的结果,除非单独的列出现在 GROUP BY 子句中。如果未能在 GROUP BY 子句中包含一个字段列表,会收到一个错误信息。
使用 WHERE 子句,可以在划分行成组以前过滤行。
在 GROUP BY 子句中必须包含列。
在 GROUP BY 子句中你不能用列别名。
默认情况下,行以包含在 GROUP BY 列表中的字段的升序排序。可以用 ORDER BY 子句覆盖这个默认值。
三、GROUP BY 子句的使用
可以根据自己的需要对数据进行分组,在分组时,只要将需要做分组的列的列名添加到 GROUP BY 子句后侧就可以。GROUP BY 列不必在 SELECT 列表中。
例
计算每个部门的平均薪水;
Select avg(salary) employees group by department_id;
四、约束分组结果(having)
HAVING 语句通常与 GROUP BY 语句联合使用,用来过滤由 GROUP BY 语句返回的记录集。
HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。
HAVING 子句语法
例
显示那些最高薪水大于 5000 的部门的部门号和最高薪水。
Select department_id,max(salary) from employees group by department_id having max(salary) > 5000;