GROUP: Agrupando registros



Generalidades
Combina o como su traducción lo dice, agrupa, a los registros con valores idénticos, en la lista de campos especificados, en un único registro en la instrucción SELECT.
Por otro lado para cada registro se puede crear una función de agregado, como por ejemplo lo son SUM para sumar, MIN ó MAX para encontrar valores extremos o AVG para calcular promedios entre otros.

Sintaxis
SELECT campo1, campo2, campo3, campo4 FROM Clientes WHERE criterio GROUP BY campo_agrupar_primero, campo_agrupar_segundo

La cláusula GROUP BY es opcional, y si procedemos a utilizarla nos encontraremos con que todos los campos de la lista de campos de la instrucción SELECT deben o bien incluirse en la cláusula GROUP BY o como argumentos de una función de agregado.

Veamos esto con unos ejemplos con diferentes particularidades sobre esta cláusula:


SELECT * FROM nombre_tabla GROUP BY campo1
Suponiendo que la tabla tiene 8 campos, que van del campo1 al campo8, esta consulta nos generará un error porque estamos pidiendo seleccionar todos los campos e intentando agrupar por solamente uno de ellos, siendo esto incoherente.
La manera correcta sería:


SELECT campo1 FROM nombre_tabla GROUP BY campo1
Esto nos devolverá como resultado 1 solo registro por cada valor diferente que tiene el campo1 en la tabla, por lo tanto los valores repetidos o duplicados se mostrarán una sola vez en el resultado.

Ejemplo práctico
Tabla equipos_futbol

Pais Equipo
Argentina Boca
Argentina River
Brasil San Pablo
Uruguay Peñarol
Argentina Rosario Central
Venezuela Deportivo Táchira
Brasil Flamengo
Argentina San Lorenzo

Si agrupamos como dijimos anteriormente por ejemplo SELECT pais FROM equipos_futbol GROUP BY pais, como resultado tendremos:

Pais
Argentina
Brasil
Uruguay
Venezuela

Ahora si en cambio queremos saber cuantos registros hay originalmente por cada pais, podemos usar una de las principales funciones de agregado, COUNT:

SELECT pais, count(*) as total FROM equipos_futbol GROUP BY pais

Noten que la sintaxis presenta al * para así contar la totalidad de los registros y así evitar la nulidad de cualquiera de los otros campos de la tabla y por otro lado aparece un ALIAS, encabezado por el operador AS y un nombre que elijo para identificar el campo que ahora es evaluado y tendra el resultado de la cuenta como dijimos:

Pais Total
Argentina 4
Brasil 2
Uruguay 1
Venezuela 1

El orden de salida de los datos dependerá si utilizamos además una cláusula ORDER BY o no en la consulta.



Se puede agrupar por la cantidad de campos que se desee, por ejemplo ahora agrupamos por 3 campos, deberemos escoger al menos esos 3 campos e incluirlos en la instrucción SELECT:

SELECT campo1, campo2, campo8 FROM nombre_tabla GROUP BY campo8, campo1, campo2

Cabe destacar que no importa el orden tanto de la lista de campos que incluimos en la instrucción SELECT, así como tampoco el orden que los colocamos en la agrupación en la cláusula GROUP BY

Observación:
Funciones de agregado

Las funciones de agregado son varias aparte de COUNT que mencionamos aquí, pero las veremos más a fondo en otros capítulos, operan todas de la misma manera, realizando un cálculo a partir de la agrupación de registros.

 
 



Búsquedas más frecuentes
Diseño y DesarrolloDiseño y desarrollo de sitios web