Group by
Sirve para agrupar filas, el resultado son N filas cada una de las cuales representa un grupo. Cada grupo se crea cuando las filas tienen el mismo valor en la columna por la que se agrupa.
Una vez que se tiene un resultado con N grupos, en ese momento se pueden aplicar las funciones de agregación, las cuales aplican a cada grupo.
Se agrupa por una columna común entre las filas para que junte todas esas filas, luego se aplican funciones de agregación sobre otras columnas del grupo.
Agrupa las filas que tengan el mismo valor en todas las columnas indicadas.
Ejemplo que agrupa todos los departamentos con el mismo nombre, Y que tengan el mismo salario asignado.
SELECT NAME, SALARY
FROM Department d INNER JOIN EMPLOYEES e ON e.id_department=d.id
GROUP BY NAME, SALARY
La clausula HAVING
fue agregada a SQL porque WHERE
no puede ser utilizada con funciones de agregación:
SELECT edc_country, COUNT(*)
FROM Ed_Centers
GROUP BY edc_country
HAVING COUNT(*) > 1
ORDER BY edc_country;