玖叶教程网

前端编程开发入门

MySQL学习系列之七——用聚集函数汇总数据

我们都知道,数据库是一个存储数据的容器,查询相当于从这个容器中取出数据,一般而言,直接取出的数据很多时候不能满足我们的需求,在上一篇内容中,我们介绍了对字符串、数值以及日期的常用操作。但是,对于更复杂一些的问题,比如,计算当月每个部门的工资和、找出每个部门的最高工资、计算每个部门的平均工资等,这些问题并不能通过简单的加减乘除得以解决,这时候,我们需要引用SQL中的聚集函数。

聚集函数是指运行在行组上,计算和返回单个值的函数。在上面提出的业务场景中,我们都只是需要对表中的数据进行汇总,而不需要对表中的实际数据进行操作,如果把表中所有的数据都查询出来,然后筛选我们需要的值,无疑是对资源的一种浪费,所以,MySQL

为我们提供了5个聚集函数,来满足我们的实际需求。

在开始之前,可以创建下面的表,并插入数据,以便练习。

CREATE TABLE emp

(

emp_id int NOT NULL AUTO_INCREMENT,

emp_name char(50) NOT NULL ,

emp_address char(50) NULL ,

emp_state char(5) NULL ,

emp_sex char(1) not null,

dept_id char(2) not NULL ,

emp_salary decimal(8,2) NOT NULL ,

emp_birth datetime NOT NULL,

PRIMARY KEY (emp_id)

)

insert into emp values(2,'关羽','解州','在职','1','01','7000','1993-03-03');

insert into emp values(3,'曹操','许昌','在职','1','02','60000','1985-03-03');

insert into emp values(4,'周瑜','吴州','在职','1','03','8000','1991-03-03');

insert into emp values(5,'诸葛亮','隆中','在职','1','01','9000','1997-03-03');

insert into emp values(6,'孙权','江州','在职','1','03','20000','1995-08-03');

insert into emp values(1,'张飞','燕州','在职','1','01','6000','1995-03-03');

1.AVG()函数:AVG()函数可以返回返回所有列的平均值,也可以返回特定列或行的平均值。

(1)查询emp表中所有员工的平均工资(emp_salary)

select AVG(emp_salary) from emp

(2)除了可以查询表中所有字段的平均值,也可以查询特定列或行的平均值。

例如:查询emp表中部门主键(dept_id)值为01的所有员工的平均工资

select AVG(emp_salary) from emp where dept_id = '01'

MySQL执行顺序:通过where子句过滤出dept_id为01的员工,然后通过AVG()函数计算出工资的平均值。

需要注意的是,AVG()函数会忽略值为NULL的值。

2.COUNT()函数:COUNT()函数进行计数。可以利用COUNT()函数确定表中行的数目或符合特定条件的行的数目。

(1)根据emp表求出员工总数

select COUNT(*) from emp;

(2)计算部门编码(dept_id)为01的员工总数量

select COUNT(*) from emp where dept_id = '01';

3.MAX()函数:MAX()函数可以返回指定列中最大的值,要求制定列名

(1)例如:我们需要返回员工工资最高的数字(emp_salary)

select MAX(emp_salary) from emp

(2)我们需要统计部门(dept_id)值为01的最高工资

select MAX(emp_salary) from emp where dept_id = '01'

4.MIN()函数:MIN()函数可以返回指定列的最小值

(1)例如:我们需要返回员工工资最低的数字(emp_salary)

select MIN(emp_salary) from emp

需要注意的是:MySQL允许MAX()和MIN()函数用于所有的列,包括非数值列。

(2)我们需要统计部门(dept_id)值为01的最低工资

select MIN(emp_salary) from emp where dept_id = '01'

5.SUM()函数:SUM()函数用来返回指定列值的和

(1)例如:我们需要返回所有员工的工资和

select sum(emp_salary) from emp

(2)例如:我们需要返回部门编码(dept_id)为01的员工工资和

select sum(emp_salary) from emp where dept_id = '01'

需要注意的是,如果为NULL值,SUM()函数会忽略对应的值。

6.组合聚集函数:上面给出的案例中,都只涉及单个聚集函数的使用,实际上,可以包含多个聚集函数。

(1)例如,我们需要了解员工工资最高值,最低值,平均值,以及工资总和。

select MAX(emp_salary) as max_salary,MIN(emp_salary) as min_salary,AVG(emp_salary) as avg_salary,SUM(emp_salary) as sum_salary from emp;

这一篇内容就是这些了,介绍了聚集函数的简单应用。喜欢的小伙伴们麻烦点关注、点赞留评论呀。

MySQL学习系列之六——创建计算字段

MySQL学习系列之五——通配符

MySQL学习系列之四——数据过滤和过滤数据

MySQL学习系列之三——不做限制的查询

MySQL学习系列之二——创建表及对表结构的基本操作

MySQL学习系列之一——MySQL简介

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言