oracle中常見的分組函數


1、求平均值:AVG()

      求和:sum()

      求最大值:  MAX()

      最小值: min()

      行列互換 :  wm_concat()

2、分組函數會自動過濾空值,需要格外注意

3、where后不可以加 分組函數;having可以

     如果不存在分組函數,where和having可以互換使用

     where是先過濾后分組,查詢效率快

     having是先分組在過濾,查詢效率慢

需注意在使用group by 時 where和having的位置:

select   t.deptno, sum(t.money)/count(*),sum(t.money)/count(t.money),avg(t.money),avg(nvl(t.money,0)) from emp t
where t.deptno ='1'
 group by t.deptno;


select   t.deptno, sum(t.money)/count(*),sum(t.money)/count(t.money),avg(t.money),avg(nvl(t.money,0)) from emp t
 group by t.deptno  having t.deptno ='1'

4、關於wm_concat()行列互換

如果字符拼接長度過長,會顯示clob

可以使用to_char(),超過4000則報錯;也可以使用dbms_lob.substr(wm_concat( t.name),len)截取指定長度的字符串,同樣超過4000會報錯

select   t.deptno,dbms_lob.substr(wm_concat( t.name),20)  from emp t
 group by t.deptno;

 


免責聲明!

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



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