一、聚合函数
聚合函数对一组值执行计算并返回单一的值,
聚合函数与group by子句一块使用方能显现它的强大,
聚合函数与其他函数的根本区别:聚合函数一般作用在多条记录上,
聚合函数中除了count()外,都忽略空值。

**聚合函数用表:

CREATE TABLE clh_t_stuff 
 (id INT PRIMARY KEY auto_increment, 
NAME VARCHAR(20), 
 salary FLOAT, 
 age INT, 
 sex INT, 
 country VARCHAR(20), 
 area INT) 
 ENGINE=INNODB DEFAULT CHARSET=utf8;


插入数据

INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“zhangsan”,”6500”,”26”,”1”,”上海”,”200”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“lisi”,”5000”,”22”,”2”,”北京”,”330”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“wangwu”,”3900”,”26”,”1”,”广州”,”600”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“chengyi”,”6000”,”23”,”1”,”广州”,”600”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“zhaoer”,”5400”,”27”,”2”,”上海”,”200”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“zhangsan”,”5000”,”22”,”2”,”北京”,”330”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“lisi”,”10000”,”27”,”1”,”北京”,”330”); 
 INSERT INTO clh_t_stuff(NAME,salary,age,sex,country,area) 
 VALUE(“lisi”,”8800”,”30”,”2”,”上海”,”200”);**

MySQL 数据实施聚合方案 mysql数据库聚合函数_数据库

<1>求和函数–sum()
用于对数据求和,返回选取的所有值的总和。

*– SUM(expr)

– 求在上海的所有员工的总工资

SELECT SUM(a.salary) AS salarysall

FROM clh_t_stuff a

WHERE a.country LIKE”%上海%”;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_字段_02

<2>求平均值
用于对一组数据求平均值。

– AVG(DISTINCT expr) 此处distinct

– 返回指定字段去重之后的平均值,空值忽略。

– 计算所有员工的平均工资。

*SELECT AVG(DISTINCT a.salary) AS Avsalary

FROM clh_t_stuff a;*

【去重之后的平均值结果】:

MySQL 数据实施聚合方案 mysql数据库聚合函数_字段_03

– AVG(expr)

– 返回指定字段的平均值,空值忽略。

*

SELECT AVG(a.salary) AS Avsalary 
 FROM clh_t_stuff a;*

【不去重的平均值结果】:

MySQL 数据实施聚合方案 mysql数据库聚合函数_数据库_04

注:DISTINCT()子句意为去重,在MYSQL语句中经常用到!

<3>count()计算满足条件的数量

– count

– 返回指定组中的项目数量。

– 计算年龄大于23岁的员工数量,重名无效。

*SELECT COUNT(DISTINCT a.NAME) AS total 
 FROM clh_t_stuff a 
 WHERE a.age>23;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_字段_05

<4>max()返回指定数据的最大值

– MAX(expr)

– 返回指定数据中的最大值。

– 查询同在上海工作的人中的最高工资。

*SELECT a.id,a.NAME,MAX(a.salary) 
 FROM clh_t_stuff a 
 WHERE a.country LIKE”%上海%”;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_聚合函数_06

<5>min()返回指定数据的最小值

– MIN(expr)

– 返回指定组中的最小值。

– 查询姓名同为lisi的员工的最低工资。

*SELECT a.id,a.NAME,MIN(a.salary) 
 FROM clh_t_stuff a 
 WHERE NAME LIKE”%lisi%”;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_数据库_07

<6>经常与聚合函数一块使用的子句–group by()
group by():通过字段或者一定的规则将数据集划分成几个区域,以便于对数据集进行数据处理。

*– 按照年龄排序 各年龄的员工平均工资

SELECT AVG(a.salary),a.age 
 FROM clh_t_stuff a 
 GROUP BY a.age;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_MySQL 数据实施聚合方案_08

<7>经常与聚合函数一块使用的子句–having()
having()子句若包含多个字段,则可以用AND/OR/NOT连接。
having()子句中包含的字段必须在select语句中出现
having()是分组(group by)后的筛选条件,作用于分组后的数据组内再筛选。(where()子句用于在分组前筛选)

*– 按照城市排序 查询各城市员工的平均工资,只显示平均工资大于5000的。

SELECT AVG(a.salary),COUNT(a.NAME) AS pnum 
 FROM clh_t_stuff a 
 GROUP BY a.country 
 HAVING AVG(a.salary) >5000;*

MySQL 数据实施聚合方案 mysql数据库聚合函数_聚合函数_09