1. 程式人生 > >oracle學習筆記(聚合函式以及group by 和having 的用法)

oracle學習筆記(聚合函式以及group by 和having 的用法)

                                                                                                           今天學習了聚合函式以及group by 的用法。

      oracle的聚合函式:

count(*|列)     --- 統計列的數目 例select  count (*) from emp where empno<100;    忽略空值

avg(數值型列)---返回列的平均值(如求平均薪水)select  avg (sal ) from emp ;

sum(數值型列)-- 返回列中數值的求和

max(列)            --求列中最大的資料

min(列)            --- 求列中最小的資料

注意: 聚合函式是返回單行資料,不能直接和表中其他的列一起查詢

例: select empno ,empname,count(*),avg(sal) from emp ;   --這個查詢是無效的 

---group by  分組  把一列中具有相同值得資料當成一組資料進行分組,最後返回一條資料,分組函式忽略空值(隱含是升序排列的)

!注意:  如果select 語句後面有組合函式(聚合函式) 那麼 select  後面的列必須是組函式或者出現在group by 中的欄位。但是group by 後面加的欄位可以任意

having 的用法: having 是對group by 分組之後的資料進行篩選用的,彌補where 條件查詢優先順序高於group by 的缺陷

優先順序:where > group by > having  (為什麼會有having的原因,以及having 和where  的區別) 

標準的sql 語句:

select 

from

where

group by

having 

結論:
1.WHERE 子句用來篩選 FROM 子句中指定的操作所產生的行。
2.GROUP BY 子句用來分組 WHERE 子句的輸出。
3.HAVING 子句用來從分組的結果中篩選行。