我的 MySQL 数据库中有一个表,其中包含以下列:
- 卡利德
- 事件
我想选择事件为“ENTERQUEUE”的所有行,这是我在下面的查询中执行的操作:
SELECT count(*)
FROM voipnow.ast_queue_log
WHERE queuename = '0536*401'
AND DATE(time) = '2014-03-07'
AND event = 'ENTERQUEUE'
ORDER BY time DESC;
但我只想显示事件列不等于 CONNECT
的行数,其中 callid
等于 callid
上述查询中的列
更新:
发生的情况是,当调用进入数据库时,会插入一行
示例:
callid - 1234
event - ENTERQUEUE
然后,当调用绕圈而没有被应答时,插入此数据:
callid - 1234
event - RINGNOANSWER
然后一旦调用被应答,数据
callid - 1234
event - CONNECT
挂断电话后
callid - 1234
event - COMPLETEAGENT or COMPLETEAGENT
如果调用者在应答前挂断
callid - 1234
event - ABANDON
因此,当调用者等待时,只有包含事件 ENTERQUEUE 或 RINGNOANSWER 的行
我想显示上面的行数,我需要什么查询
最佳答案
我确信有更快的方法来执行此查询,但这里是一种。
基本上,您想要的是获得所有后面没有 CONNECT 或 ABANDON 的 RINGNOANSWER。因此,您可以首先获取所有 CONNECT/ABANDONS,然后查找所有 Callid 不等于 connect/abadon-list 的 RINGNOANSWER...正是您想要的。你可以这样做:
SELECT COUNT(DISTINCT `callid`) FROM `voipnow`.`ast_queue_log` WHERE `event`='RINGNOANSWER' AND `callid` NOT IN (SELECT `callid` FROM `voipnow`.`ast_queue_log` WHERE `event`='CONNECT' OR `event`='ABANDON')
关于php - 根据 col2 相关值从 MySQL 选择其中 col1 是值的行以及 col1 不是值的另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22312137/