一.分組查詢
概述作用:
“Group By”從字面意義上理解就是根據“By”指定的規則對數據進行分組,所謂的分組就是將一個“數據集”划分成若干個“小區域”,然后針對若干個“小區域”進行數據處理。
1.使用group by進行分組查詢
在使用group by關鍵字時,在select列表中可以指定的項目是有限制的,select語句中僅許以下幾項:
〉被分組的列
〉為每個分組返回一個值得表達式,例如用一個列名作為參數的聚合函數
group by的使用在這只寫幾個例子吧:
例:
select courseID,avg(score) as 課程平均成績
from score
group by courseID
例:
select studentID as 學員編號,courseID as 內部測試,avg(score) as 內部測試平均成績
from score
group by studentID,courseID
2.使用having子句進行分組篩選
- where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。
例:
select studentID as 學員編號,courseID as 內部測試,avg(score) as 內部測試平均成績
from score
group by studentID,courseID
having avg(score)>60
3.使用注意
select 類別, sum(數量) as 數量之和, 摘要
from A
group by 類別
order by 類別 desc
示例3執行后會提示錯誤,這就是需要注意的一點,在select指定的字段要么就要包含在Group By語句的后面,作為分組的依據;要么就要被包含在聚合函數中。
在select語句中,where、group by、having子句和統計函數的執行次序如下:
where子句從數據源中去掉不符合去搜索條件的數據;group by子句搜集數據行到各個組中,統計函數為各個組計算統計值;having子句去掉不符合其組搜索條件的各組數據行 。