1. 程式人生 > >oracle分組統計查詢

oracle分組統計查詢

分組統計查詢(本次都是使用scott使用者下的表格)知識點
1. 統計函式的使用;
2. 分組統計的查詢的實現;
3. 對分組的資料過濾;

* 統計函式(又稱分組函式)

之前學過的count()函式。這個函式主要的作用是統計一張資料表格的資料量的個數。常用函式分共5個:為connt()、sum()、min()、avg()、max()。
1. 統計個數:count(),根據表格的實現資料量返回結果
2. 求和:sum(),是針對數字的統計
3. 平均值:avg()是針對資料的統計
4. 最小值:min(),各種資料型別多支援
5. 最大致:max()各種資料型別多支援

範例:select count() 人數,avg(sal)員工平均工資,sum(sal)每月工資支出,max(sal)最高工資,min(sal)最低工資from emp;以上的函式,在表沒有資料的時候,只有count()會返回結果其他都是null count(

):可以準確的返回表中的全部記錄;count(欄位):統計不為null的所以資料量count(distinct 欄位):消除重負的資料之後的結果。
* 分組統計

語句及查詢執行順序

	* 4.顯示的資料列 select
	* 1.顯示的資料來源 from
	* 2.篩選資料 where
	* 3針對篩選進行分組group by
	* 5。對選定的資料進行排序 order by

語句:
select deptno,count(*),avg(sal)from empgroup by deptno;
注意使用規範: 1.如果查詢中不使用group by字句,那麼select字句之允許出現統計函式,其他欄位都不允許出現2. 如果查詢中使用group by子句。那麼select欄位只能出現分組欄位,分組函式,其他任何欄位都不能出現。3.統計函式允許巢狀,但是巢狀之後的select子語句中允許出現巢狀函式,不允許出任何欄位,包括分組欄位。
* 多表查詢與分組統計

當陣列重複的時候分組才有意義,因為一個人也可以分為一組,只是沒有意義而已,分組採用GROUP BY語句完成,語法如下:SELECT [DISTINCT] * | 列名稱 [AS]別名,………FROM 表名稱1 [別名1][WHERE 條件(s)][GROUP BY 分組欄位1[,分組欄位2,…]][ORDER BY 排序的欄位 1,ASC| DESC,排序的欄位2 ASC| DESC,….]
* having字句

WHERE和HAVING的別 WHERE:是在執行GROUP BY操作之前進行的過濾,表示從全部資料中篩選出部門資料,WHERE之中不能使用統計函式 HAVING:是在GROUP BY分組之後的再次過濾,可在HAVING子句中使用統計函式
* 分組查詢案例