GROUP BY, ¿para qué sirve Agrupar Datos en una Tabla Mysql?

Anuncio
GROUP BY, ¿para qué sirve Agrupar
Datos en una Tabla Mysql?
La sentencia group by sirve para agrupar datos, según un determinado criterio, y
aplicar operaciones sobre los elementos del conjunto conformado.
La definición resulta un poco confusa, por lo tanto veamos la utilidad que tiene
la consulta group by a través de un ejemplo práctico.
Supongamos que ahora nos interesa saber la cantidad de servicios que brinda una
determinada empresa. Retomando la definición teórica que vimos al inicio, la
solución a esta consigna podríamos pensarla de la siguiente manera:
Conformaremos un grupo (agrupar datos) por cada empresa (criterio) y dentro de
cada grupo contabilizaremos (operación) la cantidad de servicios que ofrece.
Nuestra consulta mysql quedaría así:
select Empresas.Nombre,Servicios.Servicio,count(*) as CantidadServicios
from Empresas
inner join Servicios on Empresas.Id=Servicios.IdEmpresa
group by IdEmpresa
Observemos que en la línea número 4 especificamos la consulta group by. Es muy
importante respetar el orden de las sentencias mysql (select, from, inner join,
group by, etc). Por ejemplo, si haríamos el group by antes del inner join no
funcionaria como deseamos.
En el group by especificamos “IdEmpresa”. Este vendría a ser el criterio por el
cual deseamos agrupar las filas; en nuestro caso deseamos agrupar todas las
filas que correspondan a la misma empresa.
Una vez que tenemos armados los grupos, contabilizamos las filas que contiene
cada uno. Esto lo hacemos en la línea 1 de nuestra consulta mysql
mediante count(*) y volcamos el resultado del conteo dentro del campo
“CantidadServicios”.
Cada grupo representará una fila en el resultado final de nuestra consulta mysql
group by. Y como hemos aprendido previamente podemos utilizar la
sentencia mysql_fetch_array para imprimir en pantalla los resultados de una
consulta msyql.
Finalmente el código fuente php completo quedaría de la siguiente manera:
// Conexión a base de datos Mysql
$conexion=mysql_connect('localhost','Tu-Usuario-Mysql','Contraseña-de-tuUsuario-Mysql');
mysql_select_db('Nombre-de-tu-Base-de-datos-Mysql',$conexion);
// Consulta Mysql donde aplicamos GROUP BY
$consulta_mysql="select Empresas.Nombre,Servicios.Servicio,count(*) as
CantidadServicios
from Empresas
inner join Servicios on Empresas.Id=Servicios.IdEmpresa
group by IdEmpresa";
$resultado_consulta_mysql=mysql_query($consulta_mysql,$conexion);
// Imprimimos en pantalla los resultados de nuestra consulta mysql
while($fila=mysql_fetch_array($resultado_consulta_mysql)){
echo "La empresa ".$fila['Nombre']." ofrece ".$fila['CantidadServicios']." a
sus clientes.
";
}
En este caso nos interesaba “contar” la cantidad de filas que conformaban cada
grupo. Pero también se pueden efectuar otras operaciones.
Una operación muy utilizada es sum y sirve para efectuar sumatorias de valores
contenidos en un grupo, la operación sum del group by nos servirá para calcular
el importe total por ejemplo de la compra en el carrito del cliente (estaríamos
haciendo una sumatoria de los importes de cada ítem).
www.asociacionaepi.es
Descargar