Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL, um den maximalen Wert zwischen Ein- und Aus-Zeitstempeln plus 3 Sekunden auszuwählen

Die folgende Abfrage wählt alle Zeilen aus, deren Status nicht null ist.

Für die Zeilen mit dem Status „Aus“ wird eine Unterabfrage verwendet, um die maximale Gewichtung zwischen dem letzten „Ein“ und dem aktuellen „Aus“ + 3 Sekunden zurückzugeben.

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