Estás en: MySql y SQL : Group By y Having
Group by
Agrupa registros. Combina los registros devueltos que tienen valor idéntico en uno solo.
Ejemplo
El siguiente ejemplo agrupa por empleado. Todos los que tengan el mismo nombre, se quedan en un único registro
SELECT empleado, MAX(sueldo) AS Sueldo_Max FROM empleados GROUP BY empleado
Having
Equivale a Where, pero se usa en los select en los que hacemos agrupaciones, porque si en la condición entra alguno de los campos por los que agrupamos o utilizan función de agregado, el where da error.
Cuando hay que poner una condición que incluye uno de los campos agrupados o generado (máximo, mínimo...), en vez de WHERE, se pone HAVING
Ejemplo
SELECT empleado, MAX(sueldo) AS Sueldo_Max FROM empleados GROUP BY empleado HAVING Max (sueldo) > 1000 ó HAVING Sueldo_Max > 1000