sql語句中 group by 和 having 的使用
group by name :意為對name進行分組(name表示屬性)
group by name having 條件A :意為對name分組後,再根據條件A進行刪選
例子:
表table
name course score
A 數學 80
A 科學 90
A 語文 70
B 數學 82
B 科學 81
B 語文 90
語句:select name from table group by name
含義:從表table中查詢所有name,並按name進行分組。分組就是將一個“資料集”劃分成若干個“小區域”,然後針對若干個“小區域”進行資料處理。
結果:
name
A
B
語句:select name from table group by name having min(score)>80
含義:按name對錶table進行分組後,查詢最小score大於80分的name。即查詢每門課程分數都大於80的學生姓名
結果:
name
B
語句:select * from table where name in (select name from table group by name having min(score)>80)
含義:查詢每門課程分數都大於80 的學生資訊
結果:
name course score
B 數學 82
B 科學 81
B 語文 90
恩,還是比較難理解的。說白了,group by就是把資料分組,分組後如果要對分出來的每一組的資料進行處理,後面就跟一個having + 篩選條件。這裡的篩選,針對的是分組後的資料。