91 007 17 22 - 09:30 a 14:00 y de 16:00 a 21:00 horas.info@asociacionaepi.es

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

Posteado en: blog Iniciado por

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-tu-Usuario-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).

image_pdfimage_print

Leave a Reply

Uso de cookies

Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de privacidad y cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies