En realidad el uso más utilizado de un GROUP GY se da en cálculos estadísticos y reportes de diverso tipo. Es en esos casos donde mejor se ve el efecto. Yo personalmente lo uso también para normalizar algunos datos de las tablas que vienen con info muy mal procesada.
El funcionamiento básico es simple: devuelve sólo el primer registro por cada conjunto agrupado donde los valores del conjunto se repitan. Esto es:
Si tienes estos valores:
Cita: A B C E F G
-------------
1 2 3 4 5 6
1 1 3 4 5 6
1 3 3 4 5 6
1 3 2 1 5 6
Si agrupamos por A y C nos devuelve:
Cita: A B C E F G
-------------
1 2 3 4 5 6
1 3 2 1 5 6
Si agrupamos por A y B:
Cita: A B C E F G
-------------
1 2 3 4 5 6
1 3 2 1 5 6
y si agrupamos por E, F y G:
Cita: A B C E F G
-------------
1 2 3 4 5 6
¿Se comprende?
Esto permite definir en el conjunto de agrupamiento un modo de clave alternativa que permita reunir en un sólo registro todos los que comparten alguna cualidad o valor. Eso también nos permite hacer que con el resto de los campos (no incluidos en el agrupamiento) se puedan realizar cálculos como cálculos de media -AVG()-, subtotales -SUM()-, máximos, mínimos, cálculos matemáticos, logarítmicos, trigonométricos, etc.
Supongamos sumar los subtotales de ventas diarios y la media de cada factura, de un mes:
Código sql:
Ver originalSELECT fecha, SUM(importe) TotalVenta, AVG(importe) VentaMedia
FROM facturas
WHERE MONTH(fecha)=10
GROUP BY fecha;
Eso te devolvería el resultado para el mes de Octubre.
Esto puede que te sirva de pantallazo. Para verlo en profundidad, lee este link:
12.10. Funciones y modificadores para cláusulas GROUP BY