Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/06/2011, 09:14
Avatar de FerraN10
FerraN10
 
Fecha de Ingreso: junio-2011
Ubicación: Sant Joan Despí
Mensajes: 79
Antigüedad: 12 años, 10 meses
Puntos: 3
Mensaje Respuesta: agrupar por numparada

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola FerraN10:

No me queda claro si necesitas que aparezcan los datos de de la tabla y después de cada grupo los totales o solamente los totales, ya que serían dos cosas distintas:

Por el tipo de consulta que estás poniendo como ejemplo creo que solo te interesan los totales, así es que se me ocurre que hagas algo como esto;

Código MySQL:
Ver original
  1. mysql> create table datos (trabajador varchar(10), numparada int,
  2.     -> tracking varchar(10), incidencia varchar(10));
  3. Query OK, 0 rows affected (0.09 sec)
  4.  
  5. mysql> insert into datos values ('H1',1,'AAAA', 'HF'),('H1',1,'AAAB', 'HF'),
  6.     -> ('H1',1,'AAAC', 'HF'),('H1',2,'AAAD', 'HF'),('H1',2,'AAAE', 'HF'),
  7.     -> ('H1',3,'AAAF', 'HF'),('H1',3,'AAAG', 'HF'),('H2',1,'VCXZ', 'HF'),
  8.     -> ('H2',2,'FFFF', 'HF'),('H2',2,'ZXCV', 'KB'),('H3',1,'VCXZ', 'KB'),
  9.     -> ('H3',2,'XXXX', 'KB'),('H3',3,'ZXCV', 'KB'),('H5',1,'AAAZ', 'HF'),
  10.     -> ('H5',1,'AAAF', 'HF'),('H5',1,'AAAE', 'HF'),('H5',1,'AADF', 'HF'),
  11.     -> ('H5',1,'AABV', 'HF'),('H5',2,'AAEX', 'HF');
  12. Query OK, 19 rows affected (0.03 sec)
  13. Records: 19  Duplicates: 0  Warnings: 0
  14.  
  15. mysql> select T1.trabajador, sum(if(T1.incidencia IN ('HF'), 1, 0)) total
  16.     -> from
  17.     -> (
  18.     -> SELECT
  19.     -> trabajador, numparada, incidencia
  20.     -> FROM datos
  21.     -> GROUP BY trabajador, numparada, incidencia
  22.     -> )
  23.     -> T1
  24.     -> group by T1.Trabajador;
  25. +------------+-------+
  26. | trabajador | total |
  27. +------------+-------+
  28. | H1         |     3 |
  29. | H2         |     2 |
  30. | H3         |     0 |
  31. | H5         |     2 |
  32. +------------+-------+
  33. 4 rows in set (0.00 sec)

Si por el contrario necesitas también presentar los datos de tu tabla entonces había que hacerlo diferente, tal vez con el WITH ROLLUP, como bien lo comenta gnzsoloyo.

si no sabes para qué se utiliza el modificador WITH ROLLUP dale un vistazo a la documentación:

[URL="http://dev.mysql.com/doc/refman/5.0/es/group-by-modifiers.html"]12.10.2. Modificadores de GROUP BY[/URL]

Saludos y espero tus comentarios.
Leo.
Hola Leo , me ha funcionado a la perfeccion . LO que he echo es lo siguiente :

1.Creo una nueva tabla temporal que se llamara prod, con la ejecucion de la consulta....

Código MySQL:
Ver original
  1. DROP DATABASE prod;//para asegurarme que no de errores...
  2. select conductor,numparada,incidencia
  3. from datos
  4. where fecha='2011-05-02'
  5. group by conductor,numparada;

2.Ejecuto la consulta como me has comentado... sobre la tabla creada...

Código MySQL:
Ver original
  1. SELECT conductor, sum(if(incidencia IN ('HF'), 1, 0)) total
  2. FROM prod
  3. GROUP BY conductor;

Muchas gracias Leo, me ha ayudado muchissimo.... Mil gracias a todos por ayudarme!!!!!!

Un abrazoo y repito .... GRACIAS!!!!!!!!
__________________
El fin de mi tarea no fue el fin sino el trayecto
Si vivir es la odisea el horizonte que clarea
En esta aldea parece perfecto así que bienvenido lo que sea