Oracle聚合函数
Oracle聚合函数同时可以对多行数据进行操作,并返回一个结果。比如经常用来计算一些分组数据的总和和平均值之类,常用函数有AVG()、SUM()、MIN()、MAX()等等。
下列案例所需表结构参考:学生信息系统。
AVG函数
AVG([distinct ] expr):该函数可以求列或列组成的表达式expr的平均值,返回的是数值类型。其中 distinct是可选参数,表示是否去掉重复行。
案例1、求学生信息表(stuinfo)中学生的平均年龄,代码如下:select * from stuinfo;
select avg(t.age) from stuinfo t;
结果:
使用该函数和其他聚合函数时,都可以和where条件语句和分组GROUP BY 查询组合使用,得到特定的结果。
案例2,、按照班级求各班学生的平均年龄(其中年龄大于等于30岁的不计入在内)。代码:select classno, avg(t.age)
from stuinfo t
where t.age
group by t.classno;
结果:
COUNT函数
count(*|[distinct]expr)函数可以用来计算查询结果的条数或行数。函数中必须指定列名或者表达式expr,不然就要全选使用*号。
案例3、查询学生信息表中所有的学生的个数。代码如下:select count(*) from stuinfo;
结果:
MAX/MIN函数
MAX([distinct] expr)、MIN([distinct] expr)函数可以返回指定列或列组成的表达式expr中的最大值或最小值。该函数也通常和where条件、group by分组结合在一起使用。
案例4、求学生信息表中年龄最大的学生的年龄:select max(age) from stuinfo;
结果:
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
group by t.classno;
结果: