Ver Mensaje Individual
  #10 (permalink)  
Antiguo 12/12/2008, 10:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Seleccionar el registro con el mayor valor en un campo ???

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 original
  1. SELECT fecha, SUM(importe) TotalVenta, AVG(importe) VentaMedia
  2. FROM facturas
  3. WHERE MONTH(fecha)=10
  4. 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
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)