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,這樣算出來的就是絕對平均值了(包含為空的行)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM