我有这个SQL查询:
SELECT COUNT(DISTINCT callid) as r
FROM voipwallboard_ast_queue_log
WHERE queuename = :queuename
AND time > :date
AND callid NOT IN (
SELECT callid FROM voipwallboard_ast_queue_log
WHERE event IN ('CONNECT', 'ABANDON',
'AGENTCALLBACKLOGOFF', 'AGENTCALLBACKLOGIN'))
但我需要确切地知道它在做什么,有人能告诉我吗?
答案 0 :(得分:0)
它会返回指定callid
和queuename
过滤的所有唯一 date
所有事件CONNECT
,ABANDON
},AGENTCALLBACKLOGOFF
和AGENTCALLBACKLOGIN
答案 1 :(得分:0)
似乎你正在计算来自voipwallboard_ast_queue_log的callid(通常是一次调用专用但它可以有许多不同的事件),但是你没有计算其事件是'CONNECT,ABANDON,AGENTCALLBACKLOGOFF,AGENTCALLBACKLOGIN)的callid
您可以指定DATE和队列名称。
答案 2 :(得分:0)
它计算a:queuename的不同调用:截止日期,并排除任何在任何时间点发生'CONNECT', 'ABANDON', 'AGENTCALLBACKLOGOFF', 'AGENTCALLBACKLOGIN'
事件或任何queuename的调用。
答案 3 :(得分:0)
子查询:
SELECT callid FROM voipwallboard_ast_queue_log
WHERE event IN ('CONNECT', 'ABANDON', 'AGENTCALLBACKLOGOFF', 'AGENTCALLBACKLOGIN')
从voipwallboard_ast_queue_log表中选择callid列表,其中event是'CONNECT', 'ABANDON', 'AGENTCALLBACKLOGOFF', 'AGENTCALLBACKLOGIN'
中的任何一个
主要查询:
SELECT COUNT(DISTINCT callid) as r
FROM voipwallboard_ast_queue_log
WHERE queuename = :queuename
AND time > :date
AND callid NOT IN (Sub query)
选择不在子查询结果中的callid和其他条件的callid的不同计数。
答案 4 :(得分:0)
因此内部查询(称为子查询)将首先运行,并返回单个列(callid)表,您可以对其运行更多查询。
WHERE事件IN子句只是意味着只选择事件属性是其中之一的行(' CONNECT',' ABANDON',' AGENTCALLBACKLOGOFF', ' AGENTCALLBACKLOGIN'。)
一旦该查询返回单列表,外部查询将返回返回的行数,其中queuename是您指定的queuename,它大于您指定的日期,并且callid确实不显示在上一个查询中。
您还使用了DISTINCT关键字,因此重复行将从计数中排除。