Количество звонивших в нерабочее время - 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) на каждый день.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д