iberck
10/1/2015 - 7:13 PM

Group by

Group by

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.

GROUP BY con múltiples columnas

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

HAVING

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;
  • WHERE comes before GROUP BY; SQL evaluates the WHERE clause before it groups records.
  • HAVING comes after GROUP BY; SQL evaluates HAVING after it groups records.