|
|
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
Имеется таблица в mysql для rsyslog, в ней есть таблица systemevents: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Для некоторых событий из логов я решил оценить в какое время суток они обычно появляются. Например, имеется 6 строк: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Мне нужно получить среднее время суток, когда происходят эти события (пример не очень удачный, т.к. данные разбросаны сильно и среднее ничего толком не скажет). Вот что первое пришло в голову: Код: sql 1. 2. 3. 4. 5. 6. 7. Я полагал, что hour вернет значение часа как целое число, и дальше по нему должно посчитаться среднее и должно получиться 12:30 (примерно). Думаю, может hour возвращает не целое, ок, пробую так: Код: sql 1. 2. 3. 4. 5. 6. 7. Результат не изменился. Видимо имеет место быть игра теней особенность работы с типами дата-время. Поиск в интернете пока навел на нечто такое (тут должна получиться среднее дата-время): Код: sql 1. 2. 3. 4. 5. 6. 7. Вроде бы тоже на правду не очень похоже. Мне хочется странного или действиельно получить среднее значение времени не тривиальная задача? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:25 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortress, avg - это арифметическое среднее, sum / count. Поэтому avg дробные значения может возвращать. Но уточнить другое хочу: Код: sql 1. вот этот limit 6 остался по ошибке с прошлого запроса или вы предполагаете, что будут выбраны данные только 6 каких-то первых-попавшихся строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:32 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
limit 6 - просто для примера, чтобы можно было правильность результата оценить на пальцах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:37 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortresslimit 6 - просто для примера, чтобы можно было правильность результата оценить на пальцах.Ну чтобы пальцы при каждом запуске были одни и те же, то надо как-то так: Код: sql 1. Код: sql 1. Т.е. чтобы контрольные данные и результат из одних и тех же записей брались, а не из разных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:40 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
Для определенности возьмем данные из упорядоченного набора строк: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:44 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortressДля некоторых событий из логов я решил оценить в какое время суток они обычно появляются.Я бы для этого предложил строить распределение по часам, дням недели, дням месяца и т.п. Вдруг, например, там несколько пиков в течение суток или, например, по понедельникам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:45 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortress Код: sql 1. Это не так работает, как вы думаете. LIMIT сработает после вычисления среднего, а не до. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:46 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
miksoftfortressДля некоторых событий из логов я решил оценить в какое время суток они обычно появляются.Я бы для этого предложил строить распределение по часам, дням недели, дням месяца и т.п. Вдруг, например, там несколько пиков в течение суток или, например, по понедельникам. Так пожалуй даже правильней будет для решения конечной задачи, разве что иногда час может оказатся слишком большим прмежутком времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:49 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
[/src][/quot]Это не так работает, как вы думаете. LIMIT сработает после вычисления среднего, а не до.[/quot] Спасибо что указали, повод заглянуть в документацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 16:56 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortressпример не очень удачный, т.к. данные разбросаны сильно и среднее ничего толком не скажетПример-то как раз ОЧЕНЬ удачный. Он заставляет задуматься над тем, насколько правильно (как по мне - так ни на грамм) поставлена задача. Я бы рекомендовал для начала попробовать следующее - для каждой записи посчитать количество записей в течение, скажем, 1 часа после этой записи (надеюсь, дискретность в 1 час - достаточна?), или там от минус получаса до плюс получаса. И взять среднее для того часового промежутка, где количество максимально... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2016, 18:59 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
Akina, да, возможно. Если переходить к самой задаче, то он примерно в следующем. Есть сервис к которому подключаются периодически. Ротуер логирует факты подключения в rsyslog. Я решил проверить, в какое примерно время происходит подключение. Также могу добавить что подключаются примерно раз в сутки и одно подключение состоит из нескольких соединений, каждое из которых логируется (TCP SYN). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2016, 10:32 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
Получился такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Проблема была в том, как Mysql приводит datetime (и time) к целому числу: Код: sql 1. 2. 3. Для операций поиска среднего такой способ приведения к целому числу не подходит. Для это лучше подойдут функции time_to_sec() и sec_to_time(). Они переводят время в целое количество секунд. Имея столбец таких значений можно для них оценить среднее и преобразовать его обратно к типу время. Код: sql 1. Этот запрос корректно работает именно с datetime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 11:16 |
|
||
|
Среднее значение часа
|
|||
|---|---|---|---|
|
#18+
fortress Код: sql 1. Этот запрос корректно работает именно с datetime. Точнее не так. Этот приём тоже можно использовать в моем случае, но при условии, что есть группировка по дате. Иначе результат тоже будет корректный, но менее полезный. Вот, например, видно что результат будет аналогичный: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2016, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39326455&tid=1831317]: |
0ms |
get settings: |
10ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 591ms |

| 0 / 0 |
