第六章 Multiple Row Functions 多值函数
数据库中函数分类:
1)Single Row Functions 单值函数
特点:n条数据参与函数运算得到n条结果。
2)Multiple Row Functions 多值函数(组函数)
特点:n条数据参与函数运算,得到的结果可能小于n。
计算的过程中要对数据进行分组。
一个班级有48个同学,每8人一小组,分成六6个小组。
计算每个小组的平均分数?
1.常见的多值函数
avg 计算平均值
max 计算最大值
min 计算最小值
sum 计算代数和
count 计算的某个字段非空字段值的数量
insert into s_emp(id,last_name)
values(999,'_briup');
select count(*) from s_emp;
-->25 √
2.多值函数的语法
关键字:
1)group by
用来指定分组的字段,
例如group by 字段A,
那么就会把字段A的值相同的数据分为一组。
2)having
用来指定分组之后的查询条件(功能类似where)
位置:
1)group by出现在where子句的后面。
2)having出现在group by的后面。
select查询语句中的六大关键字:
select ...
from ...
where ...
group by ...
having ...
order by ...;
语法:
select 函数名(要进行计算的字段)
from 表名
[group by 分组的字段]
[having 分组之后的查询条件];
group by和having都可以不出现。
group by不出现,代表整个表中所有数据分为一个大组。
最终只得到一个计算结果。
having不出现代表所有的数据全部输出。
例如:
查询每个部门的平均工资?
select avg(salary)
from s_emp
group by dept_id;
查询所有员工的平均工资?
select avg(salary)
from s_emp;
查询每个部门的平均工资、最高的工资、最低的工资?
select dept_id,avg(salary),max(salary),min(salary)
from s_emp
group by dept_id;
注意:
1)出现在select后面的字段,
要么是组函数,要么是分组的依据字段。
2)where和having的区别
where是在分组之前,对数据进行单值查询限制。
having是在分组、执行了组函数之后,
对组函数所产生的结果进行限制。