Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
В БД MySQL, есть таблица с информацией о смене статуса объекта, с "problem" или "unknown" в "ok" и обратно:
eventid | objectid | clock | value
1 1 1341389857 problem
2 1 1341389867 ok
3 1 1341389882 unknown
4 1 1341389904 ok
5 1 1341389927 problem
...
где, eventid - номер события, objectid - идентификатор объекта по которому зарегистрировано событие, clock - время (формат unixtime).
Помогите написать запрос, который считает и выводит суммарную длительность всех событий за последний час.
Запрос должен отбирать записи в таблице за последний час, по очереди брать значение ячейки clock где value = ok, отнимать значение сlock c value = problem или unknown и переходить к следущему событию с value = ok (например, длительность события с eventid 1 = 10 секунд, с eventid 3 = 22 сек. и т.д.), потом сумировать полученные значения.
Неактивен
Можно так :
Отредактированно evgeny (04.07.2012 23:36:54)
Неактивен
evgeny, спасибо за помощь.
Помогите ещё подправить запрос, исходя из уточнённых условий:
- запрос должен отбирать события и считать их длительность для объекта c заданным objectid, например 13492 (в таблице несколько тысяч объектов с уникальными objectid);
- должен учитывать, что статус может меняться с 0 в 1, потом в 2, потом опять в 1 .... и аж потом в 0 (то есть, для событий eventid с 22028 по 22546, длительность = 1337757095 - 1337712527 = 44568 сек).
Вот часть реальной таблицы:
eventid source object objectid clock value acknowledged ns value_changed
16486 0 0 13492 1337065152 0 0 367089048 1
16504 0 0 13492 1337067187 1 0 293137732 1
16505 0 0 13492 1337067192 0 0 386697055 1
16707 0 0 13492 1337090357 1 0 817313743 1
16708 0 0 13492 1337090367 0 0 621077743 1
16712 0 0 13492 1337090727 0 0 455654411 0
21602 0 0 13492 1337675272 2 0 706421126 0
21686 0 0 13492 1337679717 0 0 470416763 0
22028 0 0 13492 1337712527 1 0 393417129 1
22043 0 0 13492 1337712809 2 0 773469535 0
22068 0 0 13492 1337712872 1 0 771252927 0
22089 0 0 13492 1337713012 2 0 955808944 0
22104 0 0 13492 1337713079 1 0 404498446 0
22111 0 0 13492 1337713143 2 0 23358744 0
22126 0 0 13492 1337713897 1 0 272713966 0
22128 0 0 13492 1337713959 2 0 368472721 0
22147 0 0 13492 1337715657 1 0 27122582 0
22165 0 0 13492 1337715766 2 0 110087850 0
22187 0 0 13492 1337716587 1 0 283116371 0
22190 0 0 13492 1337716646 2 0 395660360 0
22209 0 0 13492 1337718337 1 0 340331432 0
22212 0 0 13492 1337718398 2 0 120239334 0
22546 0 0 13492 1337757092 0 0 305002491 1
24451 0 0 13492 1337980372 1 0 780941053 1
24453 0 0 13492 1337980412 0 0 584078983 1
где, clock 0 - ок, 1 - problem, 2 - unknown.
Отредактированно serious_shat (06.07.2012 13:10:28)
Неактивен