SQL分組統計查詢

分組統計查詢

20171113

20:36

統計函數

  • 統計個數:COUNT(* | [DISTINCT]字段)

--COUNT(*):明確地返回表中的數據個數,是最準確的。

--COUNT(字段):不統計爲null的數據個數。

--COUNT([DISTINCT]字段):統計消除重複數據後的數據個數。

  • MAX(字段)MIN(字段)
  • SUM(字段)AVG(字段)

分組統計查詢

分組是部分數據具有共性。      

分組子句GROUP BY

GROUP BY 分組字段,分組字段

SELECT job,COUNT(empno),AVG(sal)

FROM emp

GROUP BY(job) ;

 

分組操作存在嚴格的限制

1、在沒有編寫GROUP BY子句的時候,那麼SELECT子句之中只允許出現統計函數,不允許出現任何的其他字段。

錯誤代碼

正確代碼

SELECT COUNT(empno),ename FROM emp ;

SELECT COUNT(empno) FROM emp ;

2、在使用GROUP BY子句分組字段的時候,SELECT子句中只允許出現統計函數和分組字段

SELECT job,COUNT(empno),ename FROM emp GROUP BY job ;

SELECT job,COUNT(empno) FROM emp GROUP BY job ;

3、統計函數允許嵌套查詢,但是嵌套後的統計查詢中,SELECT 子句裏面不允許再出現任何的字段,包括分組字段,只能夠使用嵌套的統計函數。

SELECT deptno,MAX(AVG(sal)) FROM emp GROUP BY deptno ;

SELECT MAX(AVG(sal)) FROM emp GROUP BY deptno ;

 

SELECTd.deptno,d.dname,d.loc,COUNT(e.empno),TRUNC(AVG(MONTHS_BETWEEN(SYSDATE,hiredate)/12))year

FROM dept d,emp e

WHERE d.deptno = e.deptno(+)

GROUP BY d.deptno,d.dname,d.loc ;

 

HAVING子句對分組後的數據篩選

 

【⑤確定要顯示的數據列】SELECT [DISTINCT] 分組字段[別名]| 統計函數

【①確定要查找的數據來源】FROM

【②針對數據進行篩選】WHERE 條件

【③針對數據進行分組】GROUP BY 分組字段,分組字段,….

【④對分組後的數據篩選】HAVING 條件

【⑥對返回結果排序】ORDER BY 字段 [ASC | DESC],…,…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章