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.
|