1. 程式人生 > >PLSQL 基礎教程 四 分組查詢

PLSQL 基礎教程 四 分組查詢

本節教程繼續介紹SQL中的分組查詢相關的知識及一些簡單的使用說明。

概念

分組查詢也是SQL中比較常用的一種,是對SELECT查詢的一個細化、彙總,用於根據某些條件,並結合聚合函式 COUNT(*) ,將一個查詢結果進行分組統計,獲得對應的條件的統計資料資訊

如果需要進行分組查詢,則需要使用GROUP BY 語句和 COUNT聚合函式 來對SELECT的結果資訊進行分組資訊統計。

分組查詢的語法格式如下:

SELECT < ITEM_LIST >,COUNT(*)
 
FROM TABLE_NAME
 
WHERE < WHERE_CLAUSE >
 
GROUPBY < ITEM_LIST >;

ITEM_LIST:用於分組的條件,可以是一個或者多個語法格式說明:

COUNT(*):用於根據分組條件統計對應的分組的資料資訊,還可以用COUNT(1)代替,返回分組後的行統計資訊

WHERE_CLAUSE:獲取資料的過濾條件

說明:

a. 此處需要注意,GROUP BY 中的ITEM_LIST需要和SELECT中的ITEM_LIST個數、順序必須一致

b. 聚合函式COUNT(*)不能出現在WHERE 和 GROUP BY  語句中

概念

HAVING 是對GROUP BY分組查詢後的結果集進行資料過濾的,與WHERE語句的效果類似,主要是對結果集的資料進行篩選過濾的。

HAVING
與WHERE的區別

類別          區別

相同點

不同點

WHERE

都是進行資料過濾的,對於結果集的資料進行篩選

1.既能用在普通的SELECT語句中,也能用在分組查詢的語句中

2.WHERE 中不能使用聚合函式COUNT

3.WHERE是對SELECT語句的資料進行篩選的

HAVING

1.不能用在普通的SELECT語句中,只能用在GROUP BY 分組查詢語句中

2.HAVING中可以使用聚合函式COUNT

3.HAVING只能對分組中的資料進行過濾篩選

此處以ORACLE資料中中SCOTT使用者下的EMP表為例進行舉例說明:

SQL指令碼:用於統計不同部門中的不同職位的人員數量 

SELECT DEPTNO部門編號, JOB 職位, COUNT(*) 數量
 
FROM SCOTT.EMP N
 
GROUPBY DEPTNO, JOB;

SQL指令碼:用於統計不同部門中某個職位人員數量大於1的部門和職位資訊

SELECT N.DEPTNO部門編號, N.JOB 職位, COUNT(*) 數量
 
FROM SCOTT.EMP N
 
GROUPBY N.DEPTNO, N.JOB
 
HAVINGCOUNT(*) >1;

4. 附錄

a. 本系列教程為個人原創,基於實際工作中的使用情況及個人理解,僅供學習交流之用,有不足之處還望批評指正,希望共同提高