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 子句用來從分組的結果中篩選行。