Calcular tiempo entre 2 registros en la misma tabla MySQL
Publicado por Carlos (1 intervención) el 25/10/2018 17:46:41
Hola, tengo que hacer una consulta con MySql. Les comento: Tengo una tabla con los registros de Entradas y Salidas de Personas. Lo que requiero es conocer la cantidad de minutos que estuvo cada persona por fuera, considerando que en el campo “Evento” de Entradas/Salida en la tabla se almacena con “1”, Cada Salida se almacena en al Campo “Valor” con “0” y Cada Entrada se almacena en el Campo “Valor” con “1”.
Al tomar una entrada (Valor=1) se debe buscar en la tabla el registro inmediato anterior de la misma persona que corresponda a una Salida (Valor=0) y calcular la cantidad de minutos de diferencia entre la fecha/hora de entrada y la fecha/hora de salida. Alguien me podría ayudar?
He realizado una consulta pero me resulta muy lenta y se cuelga, ya que tengo cientos de miles de registros en la tabla.

Al tomar una entrada (Valor=1) se debe buscar en la tabla el registro inmediato anterior de la misma persona que corresponda a una Salida (Valor=0) y calcular la cantidad de minutos de diferencia entre la fecha/hora de entrada y la fecha/hora de salida. Alguien me podría ayudar?
He realizado una consulta pero me resulta muy lenta y se cuelga, ya que tengo cientos de miles de registros en la tabla.
1
2
3
4
5
SELECT d.id, d.dni, (select t.fecha from datos t where t.Evento=1 and t.Valor=0 and t.dni=d.dni and t.id<d.id order by t.id desc Limit 1) as Fecha_Salida,
d.fecha as Fecha_Entrada, TIMESTAMPDIFF(MINUTE, (select t.fecha from datos t where t.Evento=1 and t.Valor=0 and t.dni=d.dni and t.id<d.id order by t.id desc Limit 1), d.fecha) as MINUTOS
FROM datos d
where d.Evento=1 and d.valor=1 and month(d.fecha)=month(curdate())
order by d.id desc;

Valora esta pregunta


0