sql >> Base de Datos >  >> RDS >> Mysql

MySQL para seleccionar el valor máximo entre las marcas de tiempo de encendido y apagado más 3 segundos

La consulta a continuación selecciona todas las filas donde el estado no es nulo.

Para las filas donde el estado es 'Desactivado', utiliza una subconsulta para devolver el peso máximo entre el 'Activado' más reciente y el 'Desactivado' actual + 3 segundos

select t.TimeStr, t.Status,
  case
    when status = 'Off'
    then (select max(cast(Weight as signed)) from tempbatch t2 
          where t2.TimeStr between 
            (select max(TimeStr) 
                 from tempbatch t3 
                 where status = 'On' and t3.TimeStr < t.TimeStr)
          and date_add(t.TimeStr, interval 3 second)
    )
    else Weight
  end as Weight
from tempbatch t
where t.Status is not null
order by TimeStr

http://sqlfiddle.com/#!9/f27fb/6