1. 程式人生 > >sql語句中 group by 和 having 的使用

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 + 篩選條件。這裡的篩選,針對的是分組後的資料。