Количество звонивших в нерабочее время - MySQL

Узнай цену своей работы

Формулировка задачи:

Прошу вашей помощи, мне необходимо чтобы запрос выводил вот такие данные:
Листинг программы
  1. 30.04.2016 2
  2. 02.05.2016 5
  3. 03.05.2016 12
  4. 04.05.2016 7
  5. 05.05.2016 23
  6. 06.05.2016 4
Первый столбец - дата, второй - количество звонков в нерабочее время. Мой запрос выглядит так:
Листинг программы
  1. SELECT t1.calldate, t2.calldate FROM(SELECT DATE(calldate) AS calldate
  2. FROM cdr WHERE calldate > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
  3. AND calldate < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY) AND LENGTH(src)>4
  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'
  5. AND '2016-05-05 18:00:00' GROUP BY uniqueid) AS t2
Он выводит такой результат:
Листинг программы
  1. 30.04.2016 (NULL)
  2. 02.05.2016 (NULL)
  3. 03.05.2016 (NULL)
  4. 04.05.2016 (NULL)
  5. 05.05.2016 (NULL)
  6. 06.05.2016 (NULL)
Очень надеюсь на вашу помощь! Всем + в карму

Решение задачи: «Количество звонивших в нерабочее время»

textual
Листинг программы
  1. select date(calldate), count(distinct uniqueid) from cdr where time(calldate) between '09:00:00' AND '18:00:00' group by 1;

Объяснение кода листинга программы

В данном коде производится выборка данных из таблицы cdr, которая содержит информацию о звонках.

  1. date(calldate) - функция, которая извлекает дату из поля calldate.
  2. count(distinct uniqueid) - функция, которая подсчитывает количество уникальных значений в поле uniqueid.
  3. where time(calldate) between '09:00:00' AND '18:00:00' - условие, которое ограничивает выборку только теми записями, у которых время звонка находится в диапазоне от 09:00:00 до 18:00:00.
  4. group by 1 - группировка результатов по полю calldate (дате звонка). Таким образом, данный запрос выбирает количество уникальных звонков (звонивших) в нерабочее время (с 09:00:00 до 18:00:00) на каждый день.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы