我是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";
它给出了计数,但是我不确定这对于大型数据集是否可以正常工作。
答案 0 :(得分:1)
您需要选择30分钟内的所有通话,因此=
会变为<=
。另外,A.tono = B.fromno
应该更改为A.fromno = B.tono
,因为您的情况下A.tono和B.fromno是客户服务编号(表A上10秒的持续时间检查,即客户试图致电客户服务部)。 / p>
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";