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

Cómo agrupar y sumar campos

Estas en el tema de Cómo agrupar y sumar campos en el foro de Mysql en Foros del Web. Buenas, Tengo una tabla en mysql que contiene diferenes registros, cada registro pertenece a un grupo_id. No sé de que manera y si se puede ...
  #1 (permalink)  
Antiguo 18/03/2012, 18:53
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 12 años, 9 meses
Puntos: 20
Cómo agrupar y sumar campos

Buenas,

Tengo una tabla en mysql que contiene diferenes registros, cada registro pertenece a un grupo_id.
No sé de que manera y si se puede (espero que sí) poder agrupar los resultados por grupo_id y fecha.

Espero que con un ejemplo se entienda mejor. Tengo la siguiente tabla:

log_imagen_id grupo_id inicio fin guardadas not_found
1 13 19/03/2012 0:35 19/03/2012 0:35 2 0
2 13 19/03/2012 0:35 19/03/2012 0:35 1 1
3 15 19/03/2012 0:35 19/03/2012 0:35 4 1
4 17 19/03/2012 0:36 19/03/2012 0:36 1 0
5 17 19/03/2012 0:36 19/03/2012 0:36 1 0

Pego captura por si se ve mejor


El objetivo es conseguir una tabla que me indique que el grupo_id 13, ha guardado 3 imagenes y 1 not_found (es decir suma los resultados por grupo_id)
Igual que el grupo_id 17, debería decir 2 guardadas y 0 not_found

Sabéis cómo puedo lograr estas sumas de grupo?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 19/03/2012, 03:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 11 años, 8 meses
Puntos: 574
Respuesta: Cómo agrupar y sumar campos

Código MySQL:
Ver original
  1. SELECT grupo_id, SUM(guardadas) as imagenes, SUM(if(not_found=0,0,1)) as NoEncontrados
  2. FROM tuTabla
  3. GROUP BY grupo_id;

eso da

13 - 3 - 1
17 - 2 - 0
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 19/03/2012, 06:42
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 12 años, 9 meses
Puntos: 20
Respuesta: Cómo agrupar y sumar campos

Cita:
Iniciado por quimfv Ver Mensaje
Código MySQL:
Ver original
  1. SELECT grupo_id, SUM(guardadas) as imagenes, SUM(if(not_found=0,0,1)) as NoEncontrados
  2. FROM tuTabla
  3. GROUP BY grupo_id;

eso da

13 - 3 - 1
17 - 2 - 0
Muchas gracias, funciona perfecto!
  #4 (permalink)  
Antiguo 19/03/2012, 14:24
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 12 años, 9 meses
Puntos: 20
Respuesta: Cómo agrupar y sumar campos

Sería muy complicado mostrar la suma de tiempo transcurrido también agrupada?

Es decir si el resultado es:

13 - 3 - 1
15 - 4 - 1
17 - 2 - 0

Restar ambos tiempos (fin - inicio) y hacer también la suma agrupada.
¿Se puede hacer de alguna forma?

13 - 3 - 1 - 3 seg
15 - 4 - 1 - 1 seg
17 - 2 - 0 - 9 seg

Muchas gracias de antemano!
  #5 (permalink)  
Antiguo 19/03/2012, 14:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 12 años, 9 meses
Puntos: 20
Respuesta: Cómo agrupar y sumar campos

Probé así añadiendo SUM(fin - inicio) as Tiempo

Y me funciona si los tiempos son menos de 1 minuto, pero a la que haya más de 1 minuto me muestra tiempos incorrectos. Ejemplo:

Si las 3 diferencias son los siguientes segundo
1
2
60

Me da 103 en lugar de 63. ¿Alguien sabe por qué?

Muchas gracias
  #6 (permalink)  
Antiguo 19/03/2012, 14:35
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 12 años, 9 meses
Puntos: 20
Respuesta: Cómo agrupar y sumar campos

Conseguido!

SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(fin, inicio))))

00:01:03

ó

SUM(TIME_TO_SEC(TIMEDIFF(fin, inicio)))

63

Saludos!

Etiquetas: agrupar, campos, registros, sql, 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 12:15.