在MySQL數據庫中,使用GROUP BY語句可以將查詢結果按照某個字段進行分組,并統計該字段的聚合值。
語法如下:
SELECTaggregate_function(column_name),column_name(s)FROMtable_nameWHEREconditionGROUP BYcolumn_name(s)
aggregate_function可以是諸如SUM、COUNT、AVG、MAX等聚合函數,其作用是對「group by」后得到的每組數據進行聚合操作,而column_name則是需要被聚合的字段或表達式。
當然,在「group by」語句中我們還可以使用HAVING關鍵字,表示對聚合結果進行篩選,類似于WHERE關鍵字對行進行篩選。HAVING的語法如下:
SELECTaggregate_function(column_name),column_name(s)FROMtable_nameWHEREconditionGROUP BYcolumn_name(s)HAVINGcondition
例如,我們想要統計每個班級選修數學課的人數:
SELECT COUNT(*), class FROM course WHERE course_name = 'Math' GROUP BY class;
這里我們使用了COUNT(*)函數來統計每個班級選修數學課的人數,并按照class進行分組。
「GROUP BY」語句是MySQL中一個十分重要的特性,它提供了對數據庫中數據的切片和聚合。在實際的業務中,我們通常需要進行各種各樣的統計,例如按某一時間字段分組、按照等級字段劃分、按照地區/部門進行分組等等,這時候「group by」語句便能派上用場。