SQL学习(2)——MySQL数据库常用的函数--聚合函数

来源:互联网 发布:交换机流量监控软件 编辑:程序博客网 时间:2024/06/08 03:03

一、聚合函数
聚合函数对一组值执行计算并返回单一的值,
聚合函数与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”);**

这里写图片描述

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

*– SUM(expr)
– 求在上海的所有员工的总工资
SELECT SUM(a.salary) AS salarysall
FROM clh_t_stuff a
WHERE a.country LIKE”%上海%”;*
这里写图片描述

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

– AVG(DISTINCT expr) 此处distinct
– 返回指定字段去重之后的平均值,空值忽略。
– 计算所有员工的平均工资。
*SELECT AVG(DISTINCT a.salary) AS Avsalary
FROM clh_t_stuff a;*
【去重之后的平均值结果】:
这里写图片描述

– AVG(expr)
– 返回指定字段的平均值,空值忽略。
*SELECT AVG(a.salary) AS Avsalary
FROM clh_t_stuff a;*
【不去重的平均值结果】:
这里写图片描述

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

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

– count
– 返回指定组中的项目数量。
– 计算年龄大于23岁的员工数量,重名无效。
*SELECT COUNT(DISTINCT a.NAME) AS total
FROM clh_t_stuff a
WHERE a.age>23;*
这里写图片描述

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

– MAX(expr)
– 返回指定数据中的最大值。
– 查询同在上海工作的人中的最高工资。
*SELECT a.id,a.NAME,MAX(a.salary)
FROM clh_t_stuff a
WHERE a.country LIKE”%上海%”;*
这里写图片描述

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

– MIN(expr)
– 返回指定组中的最小值。
– 查询姓名同为lisi的员工的最低工资。
*SELECT a.id,a.NAME,MIN(a.salary)
FROM clh_t_stuff a
WHERE NAME LIKE”%lisi%”;*
这里写图片描述

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

*– 按照年龄排序 各年龄的员工平均工资
SELECT AVG(a.salary),a.age
FROM clh_t_stuff a
GROUP BY a.age;*
这里写图片描述

<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;*
这里写图片描述

原创粉丝点击