Oracle聚合函数

Oracle聚合函数同时可以对多行数据进行操作,并返回一个结果。比如经常用来计算一些分组数据的总和和平均值之类,常用函数有AVG()、SUM()、MIN()、MAX()等等。

下列案例所需表结构参考:学生信息系统

AVG函数

AVG([distinct ] expr):该函数可以求列或列组成的表达式expr的平均值,返回的是数值类型。其中 distinct是可选参数,表示是否去掉重复行。

案例1、求学生信息表(stuinfo)中学生的平均年龄,代码如下:

select * from stuinfo;
select avg(t.age) from stuinfo t;

结果:

AVG函数


使用该函数和其他聚合函数时,都可以和where条件语句和分组GROUP BY 查询组合使用,得到特定的结果。

案例2,、按照班级求各班学生的平均年龄(其中年龄大于等于30岁的不计入在内)。代码:

select classno, avg(t.age)
  from stuinfo t
 where t.age < 30
 group by t.classno;

结果:

Oracle聚合函数


COUNT函数

count(*|[distinct]expr)函数可以用来计算查询结果的条数或行数。函数中必须指定列名或者表达式expr,不然就要全选使用*号。

案例3、查询学生信息表中所有的学生的个数。代码如下:

select count(*) from stuinfo;

结果:

oracle count


MAX/MIN函数

MAX([distinct] expr)、MIN([distinct] expr)函数可以返回指定列或列组成的表达式expr中的最大值或最小值。该函数也通常和where条件、group by分组结合在一起使用。

案例4、求学生信息表中年龄最大的学生的年龄:

select max(age) from stuinfo;

结果:

MAX/MIN函数


SUM函数

SUM([distinct] expr)函数可以对指定列或列组成的表达式expr进行求和,假如不使用分组group by ,那就是按照整表作为一个分组。

案例5、正好利用sum函数求和乘以人数进行求学生的平均年龄

select classno, sum(age), count(*), sum(age) / count(*), avg(age)
  from stuinfo t
 where t.age < 30
 group by t.classno;

结果:

SUM函数