![]()  | 
		
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
В БД 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)
Неактивен