SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.02.2017 22:50:56

Loky
Участник
Зарегистрирован: 24.02.2017
Сообщений: 12

Помогите с замороченым запросом плиз

Всем привет !

Есть таблица - EventHistory

есть запрос
SELECT EventTime,Message,Source,Severity  FROM EventHistory WHERE (EventTime Between  '2017-02-23' AND '2017-02-23 23:59:59') AND (Message NOT LIKE '%снят%') Order by EventTime desc, Source asc

нужно чтобы выводились только строки, повторяющиеся больше 5 в колонке Source раз за 10 минут с выводом их количества.

И если например насчиталось 58 строк за 5 минут, при этом их еще есть штук 500, то их группировать так же.

пример работы:
EventTime                            Message                                  Source                          Severity         Kol-vo
2017-02-23 23:59:59        Отсутствие связи с БП1              ConErrorBP_1                       101                58
2017-02-23 23:54:51        Отсутствие связи с БП1              ConErrorBP_1                       101                44
2017-02-23 23:50:09        Отсутствие связи с БП1              ConErrorBP_1                       101                63
2017-02-23 23:48:13        Отсутствие связи с БП12             ConErrorBP_12                      4                  13
2017-02-23 23:44:10        Отсутствие связи с БП4              ConErrorBP_4                        4                  32
и т.д.

фильтр Message NOT LIKE '%снят%' обязателен



короче для анализа логов

Неактивен

 

#2 24.02.2017 22:58:03

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с замороченым запросом плиз

Делайте двойную группировку - по сперва времени, потом по source - и отфильтровывайте путем having count(*) > 5. Идея такая.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 25.02.2017 04:13:50

Loky
Участник
Зарегистрирован: 24.02.2017
Сообщений: 12

Re: Помогите с замороченым запросом плиз

deadka написал:

Делайте двойную группировку - по сперва времени, потом по source - и отфильтровывайте путем having count(*) > 5. Идея такая.

знать бы как.
я в SQL почти не шарю. Простой запрос еще могу. А этот навороченный запрос мне в свой код вставить надо для дальнейших процедур.

Неактивен

 

#4 25.02.2017 18:21:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите с замороченым запросом плиз

SELECT
  `EventTime`,`Source`,count(*) as `co`
FROM
  `EventHistory `
WHERE
  (`EventTime` Between  '2017-02-23' AND '2017-02-23 23:59:59') AND (`Message` NOT LIKE '%снят%')
GROUP BY
  `EventTime`,`Source`
HAVING
  `co` > 5
ORDER BY
  `EventTime` DESC, `Source` ASC


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 28.02.2017 12:38:11

Loky
Участник
Зарегистрирован: 24.02.2017
Сообщений: 12

Re: Помогите с замороченым запросом плиз

deadka написал:

SELECT
  `EventTime`,`Source`,count(*) as `co`
FROM
  `EventHistory `
WHERE
  (`EventTime` Between  '2017-02-23' AND '2017-02-23 23:59:59') AND (`Message` NOT LIKE '%снят%')
GROUP BY
  `EventTime`,`Source`
HAVING
  `co` > 5
ORDER BY
  `EventTime` DESC, `Source` ASC

Спасибо огромное. Завтра попробую.
А где из этого видно, что сообщения группируются за промежуток в 5 минут ?

Неактивен

 

#6 01.03.2017 06:21:56

Loky
Участник
Зарегистрирован: 24.02.2017
Сообщений: 12

Re: Помогите с замороченым запросом плиз

пишет invalid column name 'co'

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson