聚合函数

聚合函数经常配合 GROUP BYHAVING 子句使用,当然它们也可以单独使用。

该类型的函数中都会忽略列值为 NULL 的数据。

1. AVG([distinct|all]expr) 函数。

该函数可求取指定列的平均值,表示某组的平均值,返回数值类型。

各参数表示的具体含义如下:

  • distinct:去除重复的值。

  • all:表示所有的值,包括重复的值,也是默认值。

  • expr:表达式。只能是数值类型。

1.1. 这里以 empcomm 字段为例,演示最简单的使用方法。

测试脚本如下:

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 函数的使用方法。

  1. 查询 emp 表的所有记录数。

    演示脚本如下:

     select count(*)
     from productinfo;
    
  2. 查询 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;
© 2019 刘士. All rights reserved.

结果匹配 ""

    没有匹配的结果 ""