oracle avg() 绝对平均值

Posted wars

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle avg() 绝对平均值相关的知识,希望对你有一定的参考价值。

原贴地址

 

问题:

表: visits

NUMB   VISITNUMB
------ ----------
SD01       12628
SD02     6168216
SD03  
SD04     2308646
SD05    29979109
SD06  
SD07      699879
SD08     1512191
SD09     5771408
SD10     2393528
SD11      832988
SD12  
SD13  
SD14  
GD06      492559
GD04      928430
GD02     1881556
GD01     5759619
GD07      955794
GD09     4207098

NUMB   VISITNUMB
------ ----------
GD10  
GD03  
GD05  
GD08  

 

问题:求大于所有visitnumb平均值的行

如果单纯用:

select name,visitnumb
 from visits
 where visitnumb>(selectavg(visitnumb) from visits);

 

这样是不行的,因为 avg自动过滤掉了值为空的visitnumb值。

 

正确:

select name,visitnumb
 from visits
 where visitnumb>(selectavg(nvl(visitnumb,0)) fromvisits);

 

如果visitnumb为空,则赋值0,这样算出来的就是绝对平均值了(包含为空的行)。

 



























以上是关于oracle avg() 绝对平均值的主要内容,如果未能解决你的问题,请参考以下文章

oracle 中如何用avg函数求出3个月的平均费用

Oracle——分组函数

Oracle查询具有特定列平均值的最新行?

Oracle课程档案,第三天

Oracle SQL如何找到小于平均值的计数

oracle的sql语句训练