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;