MySQL записывает средний рабочий день и каждый час

0

В настоящее время я получаю счет, сгруппированный по часам и неделям:

SELECT HOUR(creationtimestamp), dayname(creationtimestamp), count(*)
FROM cdrdb.session
WHERE DATE_SUB(creationtimestamp,INTERVAL 1 HOUR) And 
creationtimestamp > DATE_SUB(NOW(), INTERVAL 1 DAY)
GROUP BY HOUR(creationtimestamp);

Что возвращает:

0   Monday  23
0   Tuesday 96
0   Wednesday   85
0   Thursday    76
0   Friday  114
0   Saturday    47
0   Sunday  32
1   Monday  2
1   Tuesday 20
1   Wednesday   19
1   Thursday    16
1   Friday  31
1   Saturday    9
1   Sunday  6
2   Monday  13
2   Tuesday 18
2   Wednesday   5
2   Thursday    5
2   Friday  8

И это продолжается до часа 23 Но это не совсем то, что я собираюсь получить.

Я бы хотел иметь около 60 результатов после того, как все сказано и сделано, в среднем по записям в течение часов с 7 до 18 часов, поэтому у меня будет строка для каждого часа понедельника через пятницу со средним количеством записей за это время Рамка.

Может быть, это будет больше похоже на

Monday | 7:00 | 89
Monday | 8:00 | 53
Monday | 9:00 | 53
...
Tuesday | 8:00 | 53

Как я могу изменить свою группу для этого

ОБНОВЛЕНИЕ ЗАПРОСА:

Правильное количество часов и дней, но средние значения могут быть неправильными. Попытка получить средний призыв на каждый понедельник с 8 до 859 утра и т.д.

SELECT 
dayname(creationtimestamp) as day, 
HOUR(creationtimestamp) as Hour, 
(sum(callsIN/ 60) * 100 as averageCalls,
(sum(callsMissed)/sum(callsIN) * 100 as averageMissedCalls
  FROM session s
    WHERE (creationtimestamp >= '2018-01-01' AND creationtimestamp < now())
  and WEEKDAY(creationtimestamp) BETWEEN 0 AND 4
  AND HOUR(creationtimestamp) between  7 and 18 
  AND finallycalledpartyno IN ( 7276,7314,7295,7306,7357,7200,7218,7247,7331,7255,7330,7000,7215,7240,7358,7312)
  GROUP BY dayname(creationtimestamp),  HOUR(creationtimestamp)
  order by dayofweek(creationtimestamp), hour asc;
Теги:

1 ответ

2
Лучший ответ

вы можете использовать для group by dayname (creationtimestamp), HOUR (creationtimestamp) и предел до 60 результата

  SELECT HOUR(creationtimestamp), dayname(creationtimestamp), count(*)
  FROM cdrdb.session
  WHERE DATE_SUB(creationtimestamp,INTERVAL 1 HOUR) And 
  creationtimestamp > DATE_SUB(NOW(), INTERVAL 1 DAY)
  AND HOUR(creationtimestamp) between  7 and 18 
  GROUP BY dayname(creationtimestamp),  HOUR(creationtimestamp) 
  ORDER BY dayname(creationtimestamp),  HOUR(creationtimestamp)  limit 60;
  • 0
    Могу ли я изменить это значение вместо 60, чтобы получать записи только с первого года с понедельника по пятницу с 7 до 18 часов?
  • 0
    Другими словами, ПОНЕДЕЛЬНИК 0800 560 будет означать 560 средних записей по понедельникам между 800 и 859
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню