Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Как подсчитать время?


Автор: dell23 26.9.2013, 11:17
Подскажите пожалуйста с запросом или алгоритмом.
Имеется таблица, в которую записывается включения и отключения насоса. Записывается время (в секундах от эпохи Unix) и действие, "вкл" или "выкл" насос. Нужно посчитать, сколько работал насос. Но проблема в том, что часто записываются ошибочые показания, например:
1300 вкл
1350 выкл
1370 вкл
1400 вкл
1430 вкл
1470 выкл
здесь ошибочно были записаны значения 1400 и 1430. Как составить такой запрос, который бы учитывал только пары значений "вкл"-"выкл"? Т.е. повторяющиеся действия нужно игнорировать.

Автор: Akina 26.9.2013, 11:49
Составь запрос на удаление ошибочных записей. И выполни его. А потом уже считай на чистых данных.

Автор: Zloxa 26.9.2013, 12:40
Код

  8   select sum(tm)
  9   from(
 10     select time -  lag(case when op!='выкл' then time end) over (order by time) tm
 11     from t
 12   )
 13  /
   SUM(TM)
----------
       150



Должно работать для http://technet.microsoft.com/ru-ru/library/hh231256.aspx, оракли, постргиса

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)