MYSQL select с интервалами времени

262
01 декабря 2017, 03:23

Добрый день! Помогите, пожалуйста, оптимизировать запрос. Нужно сделать выборку с интервалом по часу например, из таблицы со звонками телефонными по времени. Вот как-то делать неправильно и некрасиво..

SELECT
SUM(call_result = 10 and entire_call = 1 and time(dt_tm) between '04:00%' and '05:00%') AS Принятые_4-5,
SUM(call_result = 10 and entire_call = 1 and time(dt_tm) between '05:00%' and '06:00%') AS Принятые_5-6,
SUM(call_result = 10 and entire_call = 1 and time(dt_tm) between '07:00%' and '08:00%') AS Принятые_7-8,
SUM(call_result = 8 and time(dt_tm) between '04:00%' and '05:00%') AS Пропущенные_4-5,
SUM(call_result = 8 and time(dt_tm) between '04:00%' and '05:00%') AS Пропущенные_5-6

FROM BD
where (num ='1234' or num = '5678')
and dt_tm BETWEEN '2017-11-20%' AND '2017-12-02%';
Answer 1

Я так понимаю, что надо подсчитать кол-во звонков за каждый час?

Как бы я делал:

SELECT 
    COUNT(num)
FROM
    BD
WHERE
    (num ='1234' OR num = '5678') AND
    (dt_tm BETWEEN '2017-11-20%' AND '2017-12-02%)
GROUP BY
    CONCAT(EXTRACT(YEAR FROM dt_tm), ...);

Я не стал расписывать условие

CONCAT(EXTRACT(YEAR FROM dt_tm), ...);

Ты можешь это сделать самостоятельно (просто придется по помощи по mysql поползать чуть-чуть)

Основная цель этого условия превратить твою dt_tm в некоторую конструкцию, которая будет уникальна для всех времен с точностью до часу, например

ГОД МЕСЯЦ ДЕНЬ ЧАС

P.S.

все таки влез в помощь :)

CONCAT_WS(EXTRACT(YEAR FROM dt_tm), EXTRACT(YEAR FROM dt_tm), EXTRACT(MONTH FROM dt_tm), EXTRACT(DAY FROM dt_tm), EXTRACT(HOUR FROM dt_tm))

В итоге для текущего времени написания этого ответа будет сформирована строка

2017 11 29 13

P.P.S.

Возможно стоит написать так

SELECT 
    IFNULL(COUNT(num), 0) AS count

Проверил - COUNT всегда выдаёт число, поэтому IFNULL не требуется, таким образом

SELECT 
    COUNT(num) AS count
READ ALSO
Переставить строки и столбцы матрицы

Переставить строки и столбцы матрицы

Задана матрица размером NxKНайти максимальный по модулю элемент матрицы

263
WPF и обращение к объектам в DataGrid

WPF и обращение к объектам в DataGrid

Собственно, есть у меня DataGrid, источником данных для которого является список объектовМне нужно, чтобы при выборе строки выполнялся один из методов...

245
Использовать С++ код в С# в VS2017

Использовать С++ код в С# в VS2017

У меня есть исходный код написанный на с++У меня есть интерфейс написанный на с#

248
Server Broker, SqlDependency ошибка включения

Server Broker, SqlDependency ошибка включения

Захожу в SQL Manager Studio в упор вижу что включено отслеживание изменений, захожу в свойство таблицы, которая меня интересует, там тоже включено...

287