Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL pour sélectionner la valeur maximale entre les horodatages d'activation et de désactivation plus 3 secondes

La requête ci-dessous sélectionne toutes les lignes dont le statut n'est pas nul.

Pour les lignes dont le statut est 'Off', il utilise une sous-requête pour renvoyer le poids maximum entre le 'On' le plus récent et le 'Off' actuel + 3 secondes

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