GROUP BY
同じ値を持つ行を1グループ1行にまとめるSQLの句。COUNT、SUM、AVGなどの集計関数が、テーブル全体ではなくグループごとに計算される。
初心者がつまずく規則は、SELECTの各列がグループ化キーに含まれるか集計関数であるかのどちらかでなければならない、というもの。MySQLは長らくこれを許し、任意の値を返していたため、ほかのどんな機能よりも静かなバグを生んできた。WHEREはグループ化の前、HAVINGは後に絞り込むので、集計値との比較ができるのはHAVINGだけだ。その後データベースは、サイズやインデックスに応じてハッシュ集計とソートを使い分ける。拡張のGROUPING SETS、ROLLUP、CUBEは一度に複数の集計レベルを出力でき、OLAPレポートの土台となる。ウィンドウ関数は別物で、行をまとめずに集計する。