聚合函数
聚合函数经常配合 GROUP BY
或 HAVING
子句使用,当然它们也可以单独使用。
该类型的函数中都会忽略列值为 NULL
的数据。
1. AVG([distinct|all]expr) 函数。
该函数可求取指定列的平均值,表示某组的平均值,返回数值类型。
各参数表示的具体含义如下:
distinct:去除重复的值。
all:表示所有的值,包括重复的值,也是默认值。
expr:表达式。只能是数值类型。
1.1. 这里以 emp
的 comm
字段为例,演示最简单的使用方法。
测试脚本如下:
select avg(comm), avg(all comm)
from emp;
1.2. 与 GROUP BY
子句一起使用,或只用某个范围内的值。
下面演示使用 GROUP BY
子句查询各部门平均工资。
演示脚本如下:
select avg(sal)
from emp
group by deptno;
1.3. 使用该函数时, WHERE
条件子句中可以使用条件。
示例将演示工资大于 2000 的所有人的平均工资。
演示脚本如下:
select avg(sal)
from emp
where sal > 2000;
2. COUNT(*|distinctexpr)函数。
该函数可以用来计算记录的数量或某列的个数。
函数中必须指定列名,或全选使用星号。
其中各参数表示的含义如下:
*:表示计算所有记录。
distinct:表示去除重复的记录。
all:代表所有的,是默认选项。
expr:要计算的对象,通常是表的列。
下面以几个示例来演示 COUNT
函数的使用方法。
查询
emp
表的所有记录数。演示脚本如下:
select count(*) from productinfo;
查询 emp 表的 sal 字段低于 5000 的不重复的记录数。演示脚本如下:
select count(distinct sal) from emp where sal<3000;
3. MAX([distinct|all]expr) 函数。
该函数可以返回指定列中的最大值,通常都用在 WHERE
子句中的子查询。其中各参数表示的含义如下:
distinct:表示去除重复的记录。
all:代表所有的,是默认选项。
expr:表的列。
查询 emp
表中工资最高的记录,演示脚本如下:
select *
from emp
where sal = (select max(sal)
from emp);
同该函数效果相反但用法一致的有 MIN([distinct|all]expr)
函数,此函数获取指定列中的最小值。这里不再给出示例。
4. SUM([distinct|all]expr) 函数。
该函数不同于 COUNT
函数,它分组计算指定列的和,如果不使用分组,则函数默认把整个表作为一组。
各参数代表含义如下:
distinct:表示去除重复的记录。
all:代表所有的,是默认选项。
expr:表的列。
下面示例将演示利用该函数计算各部门工资总和。
演示脚本如下:
select sum(all sal)
from emp
group by deptno;