group by,having查詢 ”每**“的查詢

weixin_34214500發表於2018-04-25

group by分組,having限制組中的元素。

舉例子說明:查詢table表查詢每一個班級中年齡大於20,性別為男的人數

select COUNT(*) as '>20歲人數',classid from Table1 where sex='男' group by classid,age having age>20

需要注意說明:當同時含有where子句、group by 子句 、having子句及聚集函式時,執行順序如下:

執行where子句查詢符合條件的資料;
使用group by 子句對資料進行分組;對group by 子句形成的組執行聚集函式計算每一組的值;
最後用having 子句去掉不符合條件的組。
Group by 會把某一列相同的行放到一起,然後返回一行,如果查詢的欄位導致需要返回多行那麼就會報錯。
having子句相關的重點。 --having 子句中的每一個元素也必須出現在select列表中。having子句和where子句都可以用來設定限制條件以使查詢結果滿足一定的條件限制。 --having子句限制的是組,而不是行。where子句中不能使用聚集函式,而having子句中可以。

相關文章