powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / группировка по условию
16 сообщений из 16, страница 1 из 1
группировка по условию
    #39230099
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, просьба посодействовать и поиске решения и направить меня по правильному пути....
есть таблица по звонкам
Пример записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
calldate             src        dst    disposition
01.04.2016 00:00:00 123456789 666 NO ANSWER
01.04.2016 00:00:01 123456789 666 NO ANSWER
01.04.2016 00:00:02 123456789 666 NO ANSWER
01.04.2016 00:00:02 123456789 666 NO ANSWER
01.04.2016 00:00:04 123456789 666 ANSWERED
01.04.2016 00:00:05 888888888 666 NO ANSWER
01.04.2016 00:00:05 888888888 666 NO ANSWER
01.04.2016 00:00:05 888888888 666 NO ANSWER
01.04.2016 00:00:05 888888888 666 NO ANSWER
01.04.2016 00:00:05 888888888 666 NO ANSWER



для номера 123456789 получается будет условие группировки 'ANSWERED'
звонок с 123456789 считается отвеченным, а 888888888 наоборот
Как можно сгруппировать записи чтобы на выходе получить:
01.04.2016 00:00:04 123456789 666 ANSWERED
01.04.2016 00:00:05 888888888 666 NO ANSWER

попытался сделать что типа такого:
Код: sql
1.
SELECT calldate,src,dst,disposition FROM  `cdr` WHERE dst =  '666' AND LENGTH( src ) >3 and calldate between '2016-03-01 00:00:00' and '2016-04-01 00:00:00' GROUP BY src HAVING disposition !='ANSWERED'
...
Рейтинг: 0 / 0
группировка по условию
    #39230105
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4для номера 123456789 получается будет условие группировки 'ANSWERED'Это по какой логике так получается?
...
Рейтинг: 0 / 0
группировка по условию
    #39230124
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это по логике что звонок может перепрыгивать с одного номера на другой в поисках доступного номера и если был хоть 1 ответ значит звонок был отвечен
...
Рейтинг: 0 / 0
группировка по условию
    #39230134
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4,

А как понять, какая запись к какому звонку относится?
Код: sql
1.
2.
01.04.2016 00:00:00 123456789 666 NO ANSWER
01.04.2016 00:00:01 123456789 666 NO ANSWER

Это два звонка или один?
...
Рейтинг: 0 / 0
группировка по условию
    #39230168
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это 1 звонок понять можно только по полю src и времени звонка
...
Рейтинг: 0 / 0
группировка по условию
    #39230185
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4это 1 звонок понять можно только по полю src и времени звонкаА если один абонент два раза подряд позвонил? выглядеть же будет точно так же. Да и время разное.
...
Рейтинг: 0 / 0
группировка по условию
    #39230186
Дмитри4Всем привет, просьба посодействовать и поиске решения и направить меня по правильному пути....
http://www.mysqltutorial.org/mysql-if-function.aspx
...
Рейтинг: 0 / 0
группировка по условию
    #39230226
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftДмитри4это 1 звонок понять можно только по полю src и времени звонкаА если один абонент два раза подряд позвонил? выглядеть же будет точно так же. Да и время разное.

да все верно, отличие будет только по времени....
...
Рейтинг: 0 / 0
группировка по условию
    #39230244
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГромыхательДмитри4Всем привет, просьба посодействовать и поиске решения и направить меня по правильному пути....
http://www.mysqltutorial.org/mysql-if-function.aspx
спасибо, изучаю
...
Рейтинг: 0 / 0
группировка по условию
    #39230252
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4miksoftпропущено...
А если один абонент два раза подряд позвонил? выглядеть же будет точно так же. Да и время разное.

да все верно, отличие будет только по времени....Так в итоге это один звонок или два?
...
Рейтинг: 0 / 0
группировка по условию
    #39230259
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в итоге звонок 1:
алгоритм такой - приходит вызов который сразу попадает на несколько номеров(сразу звонят несколько телефонов) , те номера на которых трубку не подняли попадают в лог со статусом NO ANSWER, а где подняли соответственно со статусом ANSWERED
...
Рейтинг: 0 / 0
группировка по условию
    #39230265
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
SELECT substr(calldate,1,16) as calldate,src,dst,
  IF(disposition = 'ANSWERED', 1, 0) as status
   FROM `cdr` WHERE dst =666
   and calldate between '2016-03-01 00:00:00' and '2016-04-01 00:00:00'
   and LENGTH( src ) >3 GROUP BY src,status
...
Рейтинг: 0 / 0
группировка по условию
    #39230267
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4алгоритм такой - приходит вызов который сразу попадает на несколько номеров(сразу звонят несколько телефонов)Если вызов попадает сразу на несколько номеров, то почему в исходных данных для src=123456789 время разное?
...
Рейтинг: 0 / 0
группировка по условию
    #39230275
Дмитри4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому что время может быть разным, вот пример одного реального вызова
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
2016-04-01 10:31:54	84951234567	666	NO ANSWER
2016-04-01 10:32:02	84951234567	666	NO ANSWER
2016-04-01 10:32:02	84951234567	666	NO ANSWER
2016-04-01 10:32:02	84951234567	666	NO ANSWER
2016-04-01 10:32:02	84951234567	666	BUSY
2016-04-01 10:32:02	84951234567	666	BUSY
2016-04-01 10:32:02	84951234567	666	BUSY
2016-04-01 10:32:17	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	BUSY
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:24	84951234567	666	NO ANSWER
2016-04-01 10:32:25	84951234567	666	ANSWERED
2016-04-01 10:32:25	84951234567	666	NO ANSWER
...
Рейтинг: 0 / 0
группировка по условию
    #39230280
Дмитри4
Код: sql
1.
2.
3.
4.
5.
SELECT substr(calldate,1,16) as calldate,src,dst,
  IF(disposition = 'ANSWERED', 1, 0) as status
   FROM `cdr` WHERE dst =666
   and calldate between '2016-03-01 00:00:00' and '2016-04-01 00:00:00'
   and LENGTH( src ) >3 GROUP BY src,status


Наверное лучше всё-таки:
Код: sql
1.
SUM(IF(disposition = 'ANSWERED', 1, 0)) as status

и не группировать по этому полю.
А если в результате предпочтительно видеть текст, то обернуть SUM() в ещё один IF().
...
Рейтинг: 0 / 0
группировка по условию
    #39230507
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитри4вызов который сразу попадает на несколько номеров(сразу звонят несколько телефонов)Дмитри4 вот пример одного реального вызовавремяоткудакударезультат2016-04-01 10:32:0284951234567666NO ANSWER2016-04-01 10:32:0284951234567666NO ANSWER2016-04-01 10:32:0284951234567666NO ANSWER2016-04-01 10:32:0284951234567666BUSY2016-04-01 10:32:0284951234567666BUSY2016-04-01 10:32:0284951234567666BUSYИсходящий один и тот же, входящий один и тот же, время одно и тот же, результаты разные. Как это стыкуется с вышесказанным?

ГромыхательНаверное лучше всё-таки:
Код: sql
1.
SUM(IF(disposition = 'ANSWERED', 1, 0)) as status


и не группировать по этому полю.max(if(...
Ну и не группировать, да. Правда, у ТСа ещё и время звонка не под группировкой, но если он уверен, что в предела группы оно не меняется, то флаг ему в руки.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / группировка по условию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]