Количество последующих записей в таблице клиентов Mysql

#mysql

#mysql

Вопрос:

Я новичок в mysql, у меня есть таблица обслуживания клиентов, в которой хранятся звонки либо от клиента, либо от службы поддержки клиентов. В случае пропущенного вызова с номера клиента на номер службы поддержки клиентов (если duration < 10 он пропущен) служба поддержки клиентов проверит пропущенные вызовы в течение 30 минут и продолжит их выполнение, позвонив по ним.

Я должен найти общее количество последующих звонков.

 fromno       tono      startime        endtime            duration
91xxxx       121    yyyy-mm-dd h:i:s  yyyy-mm-dd h:i:s      9
91xxxx       121    yyyy-mm-dd h:i:s  yyyy-mm-dd h:i:s      26
91xxxx       121    yyyy-mm-dd h:i:s  yyyy-mm-dd h:i:s      56
91xxxx       121    yyyy-mm-dd h:i:s  yyyy-mm-dd h:i:s      5
121          91x    yyyy-mm-dd h:i:s  yyyy-mm-dd h:i:s      35
  

Здесь вызов строки 1 отбрасывается, и за ним следует служба поддержки клиентов в строке 5

Мой запрос:

 Select COUNT(*) 
from customer A 
JOIN customer B ON A.tono = B.fromno 
where A.duration < 10 and TIMEDIFF(A.endtime, B.starttime) = "00:30:00"; 
  

Это дает количество, но я не уверен, что это будет работать правильно для большого набора данных.

Комментарии:

1. Можете ли вы объяснить более подробно? в чем именно проблема?

2. Я не уверен, корректен ли мой запрос в соответствии с проблемой

Ответ №1:

Вам необходимо выбрать все вызовы в течение 30 минут, следовательно, = измените на <= . Также A.tono = B.fromno должно измениться на A.fromno = B.tono , поскольку A.tono и B.fromno в вашем случае — это номер службы поддержки клиентов (проверка длительности 10 секунд в таблице A, т. е. клиент пытается позвонить в службу поддержки клиентов).

 SELECT COUNT(*) 
FROM customer A 
INNER JOIN customer B
ON A.fromno = B.tono 
WHERE A.duration < 10 and TIMEDIFF(A.endtime, B.starttime) <= "00:30:00"; 
  

Комментарии:

1. В чем здесь разница?

2. Да, я допустил ошибку при вводе текста , которая должна быть A.fromno = B.tono но основная ошибка, которую я допустил, это <= это правильно, спасибо за решение