聚集函数
1.常用
平均值:avg
最小值:min
最大值:max
总和:sum
计数:count
其中sum和avg输入的必须是数值,其他运算可以作用于数据库中任何数据类型
查询诊疗项目的平均单价和数量,比较下列两个sql的返回结果
select avg(dj),count(*)
from hr.medi_item
where ylxmlb='2';
//count一样,会把单价为0的过滤
select avg(nvl(dj,0)),count(*)
from hr.medi_item
where ylxmlb='2';
//对单价进行空值转换,把单价为空的转换为0.所以avg不一会
查询编码是‘11111111’的病人的报销总费用和报销次数,比较下列两个sql的返回结果
select sum(bxje),count *)
from dw.patient_settle
where grbm = '111111111';
//sum空,count0
select nvl(sum(bxje),0),count(*)
from hr.patient_settle
where grbm='111111111';
//sum0 count0
2.聚集函数的特性
- 1)使用聚集函数查询的结果是关系,其中只包含一个元组
- 2)count(属性名)和count(*)的区别在于,星花返回满足条件的元组的总个数(即使一个元组的所有属性取值均为null也会计算在内),count(属性名)返回该属性中取值不为null的总个数;
- 3)不匀速在count(*)中使用distinct
- 4)不使用分组的聚集函数,在select子句中,只能出现聚集函数,不能出现属性名出来
- 5)除了count(*)以外的聚集函数,均忽略null值,如果应用的需求不希望忽略null值,可以使用nvl函数进行处理
- 6)聚集函数在输入为空集的情况下也返回一个关系,返回结果为null值,count函数例外,在输入空值,count返回0
- 7)聚集函数只能出现在select子句和having子句中
【having筛选子句】