暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL对员工信息分组统计查询的方法详解(GROUP BY的用法)

聚数云海 2021-06-02
1102

工作中我们经常会对杂乱无章的信息感到焦头烂额,如何对结果集进行分组、分组后对某个字段的统计成为首要问题。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资料包】领取更多相关资料!👇



文章转载自聚数云海,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论