Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Agrupar dentro de otro

Estas en el tema de Agrupar dentro de otro en el foro de Mysql en Foros del Web. Buenas tardes, de ante mano un cordial saludo... Tengo esta tabla - - - tabla1 - - - Id_Producto | Grupo | Valor 1 | ...
  #1 (permalink)  
Antiguo 22/03/2016, 12:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Exclamación Agrupar dentro de otro

Buenas tardes, de ante mano un cordial saludo...

Tengo esta tabla

- - - tabla1 - - -
Id_Producto | Grupo | Valor
1 | 1 | 100
2 | 1 | 200
3 | 1 | 300
1 | 1 | 400
1 | 2 | 500

esta es la consulta que estoy empleando
Código MySQL:
Ver original
  1. SELECT  COUNT (Id_Producto),Grupo,SUM(Valor) FROM tabla1 GROUP BY Grupo

pero el resultado es

COUNT (Id_Producto) | Grupo | SUM(Valor)
4 | 1 | 1000
1 | 2 | 500

y si pongo - - - SELECT COUNT (Id_Producto),Grupo,SUM(Valor) WHERE tabla1 GROUP BY Grupo,Id_Producto - - - da otro resultado más extenso... y lo que busco es este resultado

COUNT (Id_Producto) | Grupo | SUM(Valor)
3 | 1 | 1000
1 | 2 | 500

que el COUNT se realice después de agrupar Id_Producto

Última edición por gnzsoloyo; 22/03/2016 a las 13:06
  #2 (permalink)  
Antiguo 22/03/2016, 15:17
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #3 (permalink)  
Antiguo 22/03/2016, 15:33
 
Fecha de Ingreso: diciembre-2010
Mensajes: 28
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Agrupar dentro de otro

Es justo lo que buscaba leonardo_josue, muchas gracias.

Etiquetas: agrupar, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:04.