Количество звонивших в нерабочее время - MySQL
Формулировка задачи:
Прошу вашей помощи, мне необходимо чтобы запрос выводил вот такие данные:
Первый столбец - дата, второй - количество звонков в нерабочее время.
Мой запрос выглядит так:
Он выводит такой результат:
Очень надеюсь на вашу помощь! Всем + в карму
Листинг программы
- 30.04.2016 2
- 02.05.2016 5
- 03.05.2016 12
- 04.05.2016 7
- 05.05.2016 23
- 06.05.2016 4
Листинг программы
- SELECT t1.calldate, t2.calldate FROM(SELECT DATE(calldate) AS calldate
- FROM cdr WHERE calldate > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
- AND calldate < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY) AND LENGTH(src)>4
- AND recordingfile LIKE 'in%' GROUP BY 1) AS t1 LEFT JOIN(SELECT calldate FROM cdr WHERE disposition='ANSWERED' AND calldate BETWEEN '2016-05-05 09:00:00'
- AND '2016-05-05 18:00:00' GROUP BY uniqueid) AS t2
Листинг программы
- 30.04.2016 (NULL)
- 02.05.2016 (NULL)
- 03.05.2016 (NULL)
- 04.05.2016 (NULL)
- 05.05.2016 (NULL)
- 06.05.2016 (NULL)
Решение задачи: «Количество звонивших в нерабочее время»
textual
Листинг программы
- select date(calldate), count(distinct uniqueid) from cdr where time(calldate) between '09:00:00' AND '18:00:00' group by 1;
Объяснение кода листинга программы
В данном коде производится выборка данных из таблицы cdr, которая содержит информацию о звонках.
date(calldate)
- функция, которая извлекает дату из поля calldate.count(distinct uniqueid)
- функция, которая подсчитывает количество уникальных значений в поле uniqueid.where time(calldate) between '09:00:00' AND '18:00:00'
- условие, которое ограничивает выборку только теми записями, у которых время звонка находится в диапазоне от 09:00:00 до 18:00:00.group by 1
- группировка результатов по полю calldate (дате звонка). Таким образом, данный запрос выбирает количество уникальных звонков (звонивших) в нерабочее время (с 09:00:00 до 18:00:00) на каждый день.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д