В моей таблице у меня есть поля (с именем id, двоичные и временные метки), получающие данные от датчика, установленного над дверью, когда дверь открывается, она отправляет двоичное значение как 1 с меткой времени и ее собственным идентификатором. когда он закрыт, он отправляет двоичное значение как 0, а также метку времени и идентификатор. и да, он отправляет непрерывные данные, а не когда при открытии просто отправляет данные и останавливается, скорее, он продолжает отправлять данные с одинаковым значением для двоичного и id, за исключением отметки времени. например, вчера, когда дверь была открыта в течение 2-х секунд он послал данные, как это:вычисление общего времени с использованием timestamp
------------------------
id---binary---timestamp
------------------------
XX-----1------2014-12-29 21:09:08
XX-----1------2014-12-29 21:09:08
XX-----1------2014-12-29 21:09:08
XX-----1------2014-12-29 21:09:08
XX-----1------2014-12-29 21:09:08
XX-----1------2014-12-29 21:09:09
XX-----1------2014-12-29 21:09:09
XX-----1------2014-12-29 21:09:09
XX-----1------2014-12-29 21:09:09
XX-----1------2014-12-29 21:09:09
XX-----0------2014-12-29 21:09:10
XX-----0------2014-12-29 21:09:10
XX-----0------2014-12-29 21:09:10
........................................so on..
выше изображения можно найти на целый день, как много раз дверь открылась с 1 значением и остальными 0 значения времени.
Теперь, я хочу рассчитать общую продолжительность времени, чтобы показать на графике каждый день, как долго дверь была открыта. Но проблема в том, что я не знаю из выше данных, как рассчитать продолжительность времени, используя временную метку. Я знаю, что могу рассчитывать с помощью функций TIMEDIFF() и TIME_TO_SEC(), но это только тогда, когда у меня есть время начала и окончания - в моем случае у меня нет.
Я также подумал о том, чтобы выбрать все значение где binary = 1 и суммировать их вместе, но это не время реального времени, потому что мой датчик когда-то отправляет одинаковые данные 5 раз/сек, когда-то отправляет 3 раза/сек. Если было исправлено, что всегда отправляя 5data/sec, тогда я могу суммировать итог и разделить на 5, чтобы найти одну секунду, но это не так.
У кого-нибудь есть идея решить это?
Заранее спасибо .. :)
на самом деле у меня есть несколько записи на каждые секунды. сейчас его 40 записей в секунду. поэтому есть несколько данных с одинаковым двоичным значением и временной меткой, означает, что существует так много повторений. в таком случае, не думайте, что результат не будет точным? но да, ваш код кажется очень близким, возможно, это то, что я искал. позвольте мне проверить его более глубоко ... спасибо за ответ. – hypocrite420
Не имеет значения, сколько записей у вас есть на каждую секунду (за исключением производительности). В первом решении важно только, чтобы была запись для каждой второй части дня. Во втором решении это не имеет значения, и не имеет значения, есть ли несколько записей в секунду. С подсказкой об уникальном индексе и игнорировании вставки я просто хотел обратиться к проблеме с производительностью. – fancyPants