#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 но основная ошибка, которую я допустил, это <= это правильно, спасибо за решение