Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/03/2016, 15:17
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Agrupar dentro de otro

Hola royerromero:

Si entiendo bien cuál es el problema, lo que quieres hacer es contar cuantos id_productos distintos hay en cada grupo... con tu consulta el COUNT te arroja un valor de cuatro, pues en realidad son 4 los registros que para el GRUPO = 1, pero si entiendo bien, tu esperas como resultado un 3, debido a que el id_producto = 1 se repite. ¿estoy en lo correcto?

Si es así, lo único que tienes que hacer es agregar la palabra DISTINCT dentro del COUNT, de tal suerte que sólo te contará los id_productos "Distintos", es decir, algo así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +-------------+-------+-------+
  3. | Id_Producto | Grupo | Valor |
  4. +-------------+-------+-------+
  5. |           1 |     1 |   100 |
  6. |           2 |     1 |   200 |
  7. |           3 |     1 |   300 |
  8. |           1 |     1 |   400 |
  9. |           1 |     2 |   500 |
  10. +-------------+-------+-------+
  11. 5 rows in set (0.00 sec)
  12.  
  13. mysql> SELECT
  14.     ->   Grupo,
  15.     ->   COUNT(DISTINCT Id_Producto),
  16.     ->   SUM(Valor)
  17.     -> FROM tabla
  18.     -> GROUP BY Grupo;
  19. +-------+-----------------------------+------------+
  20. | Grupo | COUNT(DISTINCT Id_Producto) | SUM(Valor) |
  21. +-------+-----------------------------+------------+
  22. |     1 |                           3 |       1000 |
  23. |     2 |                           1 |        500 |
  24. +-------+-----------------------------+------------+
  25. 2 rows in set (0.00 sec)

haz la prueba y nos comentas.

Saludos
Leo.