MYSQL:如何检查值是否不在特定时间间隔内

问题描述 投票:1回答:1

我遇到以下问题。我正在查询呼叫中心数据库,我想检查未接听的电话。

我有一个呼叫进入时间戳(当有呼叫进入时),呼叫开始时间戳(当座席应答呼叫时)和呼叫结束时间戳。如果呼叫已应答并完成,我将在所有三列中都有值。如果未接来电,我将仅在通话输入时间戳中有值。还有一列指出呼叫的状态,如果已接听,则说“已应答”,如果未接,则说“已取消”。

我的问题如下,当座席不忙于另一个呼叫时,如何进行这样的查询以检查呼叫是否丢失/放弃。这意味着我必须检查所有通话开始和通话结束时间戳记之间的间隔,并排除此期间的未接来电。结果将仅是座席不忙时错过的呼叫。

主表列如下:

ID_agent
Caller_number
Entry_Time
Answer_Time
End_Time
Call_Duration
Call_Status
mysql timestamp
1个回答
0
投票

对于每个座席,您正在寻找其进入时间不在另一个呼叫的应答时间和结束时间之间的放弃的呼叫。

您可以使用left join反模式来表达:

select t.*
from mytable t
left join mytabe t1
    on  t1.id_agent = t.id_agent
    and t.entry_time between t1.answer_time and t1.end_time
where 
    t.call_status = 'ABANDONED'
    and t1.id_agent is null

或具有not exists条件:

select t.*
from mytable t
where 
    t.call_status = 'ABANDONED'
    and not exists (
        select 1
        from mytable t1
        where 
            t1.id_agent = t.id_agent
            and t.entry_time between t1.answer_time and t1.end_time
    )
© www.soinside.com 2019 - 2024. All rights reserved.