工作中我们经常会对杂乱无章的信息感到焦头烂额,如何对结果集进行分组、分组后对某个字段的统计成为首要问题。MySQL中的GROUP BY语法可以快速实现信息的分类汇总,快跟着小聚一起来试试吧!
GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
复制
SELECT子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组各返回一个结果。
复制
复制
某公司的员工信息表结构和数据如下:
复制
复制
01
列出每个部门最高薪水的结果
【SQL语句以及查询结果】:
1. 满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2. “列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
复制
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。
复制
02
查询每个部门的总的薪水数
03
查询公司2010年入职的各个部门
每个级别里的最高薪水
复制
【将 WHERE 子句与 GROUP BY 子句一起使用】
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准WHERE子句,必须在GROUP BY子句之前指定 WHERE子句。
复制
复制
注意:在SELECT语句中指定的每个列名也在GROUP BY子句中提到,未在这两个地方提到的列名将产生错误。
复制
GROUP BY子句对DEPT和EDLEVEL的每个唯一组合各返回一行。
复制
04
在GROUP BY子句之后
使用HAVING子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。因此,在GROUP BY子句后面包含一个HAVING子句。
HAVING子句可包含一个或多个用AND和OR连接的谓词,每个谓词将组特性(如AVG(SALARY))与下列之一进行比较:
复制
寻找雇员数超过2个的部门的最高和最低薪水:
复制
寻找雇员平均工资大于3000的部门的最高和最低薪水:
复制
以上就是使用MySQL中的GROUP BY语句对信息进行分类查找的方法,你学会了吗?
想要了解更多MySQL相关知识,获取相关课程资源,添加老师微信并回复【MySQL资料包】领取更多相关资料!👇