MySQL - como se puede sumar fechas segun una condicion de fila

 
Vista:
sin imagen de perfil

como se puede sumar fechas segun una condicion de fila

Publicado por alejandro (5 intervenciones) el 04/04/2018 18:16:40
fecha | rol
2017-08-16 17:37:08 USUARIO
2017-08-16 18:10:08 DESARROLLO
2017-08-16 18:10:27 DESARROLLO
2017-08-16 18:10:39 DESARROLLO
2017-08-16 18:11:00 DESARROLLO
2017-08-16 18:16:17 DESARROLLO
2017-08-16 18:16:35 DESARROLLO
2017-08-16 18:16:56 DESARROLLO
2017-08-17 10:35:47 CONTROL_CALIDAD
2017-08-24 18:00:21 CONTROL_CALIDAD
2017-08-24 18:06:32 DESARROLLO
2017-08-24 18:09:53 DESARROLLO
2017-08-28 12:43:04 CONTROL_CALIDAD
2017-08-28 15:31:05 CONTROL_CALIDAD
2017-08-28 16:51:28 DESARROLLO
2017-08-28 16:52:40 DESARROLLO

tengo una tabla asi con esos datos y deseo hacer un analisis por fechas como puedo sumas esas fechas
segun como cambie de rol por ejemplo tener una fila con el tiempo cuando paso por el usuario por el desarrollo
y por control de calidad
lo que quiero decir esq me sume las fechas de cuando este en un rol y cuando este cambie de uno hacia otro me deje de contar y cuente el otro rol y al final sumar todos los tiempos por rol
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 250
Plata
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

como se puede sumar fechas segun una condicion de fila

Publicado por leonardo_josue (414 intervenciones) el 04/04/2018 20:02:26
Hola Alejandro:

No me queda claro cómo se tiene que realizar la sumarización, ¿podrías decirnos qué es lo que esperas obtener como salida a partir de tus datos de ejemplo?

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

como se puede sumar fechas segun una condicion de fila

Publicado por luis (5 intervenciones) el 05/04/2018 15:46:53
fecha | rol
2017-08-16 17:37:08| USUARIO
2017-08-16 18:10:08| DESARROLLO
2017-08-16 18:10:27| DESARROLLO
2017-08-16 18:10:39| DESARROLLO
2017-08-16 18:11:00| DESARROLLO
2017-08-16 18:16:17| DESARROLLO
2017-08-16 18:16:35| DESARROLLO
2017-08-16 18:16:56 | DESARROLLO
2017-08-17 10:35:47| CONTROL_CALIDAD
2017-08-24 18:00:21| CONTROL_CALIDAD
2017-08-24 18:06:32| DESARROLLO
2017-08-24 18:09:53| DESARROLLO
2017-08-28 12:43:04| CONTROL_CALIDAD
2017-08-28 15:31:05| CONTROL_CALIDAD
2017-08-28 16:51:28| DESARROLLO
2017-08-28 16:52:40| DESARROLLO

Hola leo gracias por tu intervencion mi pregunta esque tengo datos como estos como puedo obtener a partir de esto datos como estos
las filas de arriba mas estas filas:

Desarrollo | control_calidad | usuario
29:32:35 | 8:50:17 | 00:00:00

donde el resultado estaria en horas minutos segundos
y lo da suma de cada rol es la sumatoria de las fechas de cuado paso por cada rol
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 250
Plata
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

como se puede sumar fechas segun una condicion de fila

Publicado por leonardo_josue (414 intervenciones) el 05/04/2018 17:20:44
Hola de nuevo luis (o alejandro, no sé si eres la misma persona O_o)

Sigue sin quedarme claro cómo llegas a los resultados que pones en tu post, veamos cada rol:

Para el caso sólo de CONTROL_CALIDAD, tienes la siguiente información:

1
2
3
4
5
6
7
8
9
10
mysql> SELECT * FROM tabla WHERE rol = 'CONTROL_CALIDAD';
+---------------------+-----------------+
| fecha               | rol             |
+---------------------+-----------------+
| 2017-08-17 10:35:47 | CONTROL_CALIDAD |
| 2017-08-24 18:00:21 | CONTROL_CALIDAD |
| 2017-08-28 12:43:04 | CONTROL_CALIDAD |
| 2017-08-28 15:31:05 | CONTROL_CALIDAD |
+---------------------+-----------------+
4 rows in set (0.00 sec)

a partir de estos datos ¿cómo es que llegas a obtener el resultado de 08:50:17?

Puedo suponer que lo que haces es sumar SÓLO LAS HORAS, sin considerar la fecha, ES DECIR

1
2
3
4
5
6
7
8
10:35:47 +
18:00:21 +
12:43:04 +
15:31:05
--------------
55:109:77
--------------
56:50:17

Suponiendo que le restes 48 horas entonces te resultado de 08:50:17 que pones en tu post, sin embargo, ahora veamos el caso de DESARROLLO; tendrías algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> SELECT * FROM tabla WHERE rol = 'DESARROLLO';
+---------------------+------------+
| fecha               | rol        |
+---------------------+------------+
| 2017-08-16 18:10:08 | DESARROLLO |
| 2017-08-16 18:10:27 | DESARROLLO |
| 2017-08-16 18:10:39 | DESARROLLO |
| 2017-08-16 18:11:00 | DESARROLLO |
| 2017-08-16 18:16:17 | DESARROLLO |
| 2017-08-16 18:16:35 | DESARROLLO |
| 2017-08-16 18:16:56 | DESARROLLO |
| 2017-08-24 18:06:32 | DESARROLLO |
| 2017-08-24 18:09:53 | DESARROLLO |
| 2017-08-28 16:51:28 | DESARROLLO |
| 2017-08-28 16:52:40 | DESARROLLO |
+---------------------+------------+
11 rows in set (0.00 sec)

entonces,considerando SOLO LAS HORAS, SIN LAS FECHAS tendríamos algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
18:10:08 +
18:10:27 +
18:10:39 +
18:11:00 +
18:16:17 +
18:16:35 +
18:16:56 +
18:06:32 +
18:09:53 +
16:51:28 +
16:52:40 +
-----------------
194:207:335
-----------------
197:32:35

a esto, si le resta 168 horas (o 7 días) te regresaría el resultado que quieres, de 29:32:35

Pero no entiendo tu lógica de por qué en el primer caso restas 48 horas y en el segundo caso 168 horas; O_o... y peor aun, para el caso del rol de USUARIO, no sé como es que llegas a que la sumatoria para este rol es de 00:00:00

Considerando sólo las sumas de HORAS,podrías hacer algo así:

1
2
3
4
5
6
7
8
9
10
11
12
mysql> SELECT rol,
    -> SEC_TO_TIME(SUM(TIME_TO_SEC(TIME(fecha)))) tiempo
    -> FROM tabla
    -> GROUP BY rol;
+-----------------+-----------+
| rol             | tiempo    |
+-----------------+-----------+
| CONTROL_CALIDAD | 56:50:17  |
| DESARROLLO      | 197:32:35 |
| USUARIO         | 17:37:08  |
+-----------------+-----------+
3 rows in set (0.00 sec)

pero esto de dará las sumas "naturales" del tiempo, tendrías que complementar esto con el criterio para restar el número de días de acuerdo a tu lógica.

Dale un vistazo y coméntanos.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar