2013-04-25 52 views
0

我在MySQL中遇到了某些查詢問題,我希望有人能幫助我。將以前的記錄與MySQL DB相關聯

一點背景資料:

我們有一個呼叫中心報告API提供給我們,從我們的「電話作爲服務」的公司。相關的領域,我從他們的XML接口抓是:

  • AGENT_NAME
  • interaction_id
  • 發起< - 這就是 「來電顯示」,這並不總是準確
  • create_timestamp
  • accept_timestamp
  • abandon_timestamp
  • queue_id

在我們的「主」隊列中排隊後,常規電話呼叫(本例中爲交互)由每個座席應答。 create_timestamp字段是呼叫開始排隊到屬於「Main」的座席的時間,而accept_timestamp是座席應答呼叫的時間。 abandon_timestamp是呼叫者厭倦了排隊和1)掛斷的時間,或者2)按菜單選項進入語音郵件。語音信箱保存爲.mp3文件,並排隊到同一組座席,就好像它是一個新的入站呼叫一樣,只是它與「Main_VM」隊列而不是「主」隊列相關。

棘手的部分是這樣的:

如果有電話打進來,並「拋棄」語音信箱時,interaction_id不一呆就是排隊給代理商的語音MP3播放相同。也不總是遞增1 ...有人在排隊時有其他呼叫進來。下面是示例記錄片段:

A) 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 
| interaction_id | origination | create_timestamp | accept_timestamp | abandon_timestamp | queue_id  | 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 
|   21771 | NNNPPPXXXX | 2012-09-04 08:26:15 | 0000-00-00 00:00:00 | 2012-09-04 08:27:17 | Main   | 
|   21772 | NNNPPPXXXX | 2012-09-04 08:27:44 | 2012-09-04 08:32:07 | 0000-00-00 00:00:00 | Main_VM  | 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 

B) 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 
| interaction_id | origination | create_timestamp | accept_timestamp | abandon_timestamp | queue_id  | 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 
|   2195 | AAAAAAAAAA | 2011-10-28 09:21:02 | 2011-10-28 09:23:50 | 0000-00-00 00:00:00 | Main   | 
|   2197 | NNNPPPXXXX | 2011-10-28 09:22:37 | 0000-00-00 00:00:00 | 2011-10-28 09:26:42 | Main   | 
|   2199 | BBBBBBBBBB | 2011-10-28 09:23:38 | 2011-10-28 09:27:23 | 0000-00-00 00:00:00 | Main   | 
|   2200 | CCCCCCCCCC | 2011-10-28 09:24:40 | 2011-10-28 09:33:09 | 0000-00-00 00:00:00 | Main   | 
|   2201 | NNNPPPXXXX | 2011-10-28 09:27:16 | 2011-10-28 09:42:28 | 0000-00-00 00:00:00 | Main_VM  | 
+----------------+--------------+---------------------+---------------------+---------------------+---------------+ 

在MySQL中,我需要能夠interaction_id 2197聯想與2201和21771與21772,例如。我會做一些事情,比如TIMESTAMPDIFF()來計算接聽電話的「總時間」,SLA遇到&廢棄百分比,等等。同時也佔營業時間和假期。我認爲我的大部分工作已經解決,但是我的主要問題在於我剛剛描述的問題。

注意:我打算將「0000-00-00 00:00:00」時間戳更改爲NULL。我仍在計劃中。

+1

如果它很重要,interaction_id是主要和INT。 – sgtHulka 2013-04-25 21:17:37

+0

那個引用「原始」交互的'parent_interaction_id'列呢? – Vapire 2013-04-25 23:52:24

+0

這是完美的Vapire,但我需要幫助確定_which_互動是父母。 – sgtHulka 2013-04-26 11:10:52

回答

0

我在這方面取得了一些進展,我想我會分享。我只是讓其中一個字段返回最近的呼叫,使用LIMIT 1

select interaction_id, origination, create_timestamp, accept_timestamp, abandon_timestamp, queue_name, parent_call, agi.agent_name 
from (
    (
    select interaction_id, origination, create_timestamp, accept_timestamp, abandon_timestamp, queue_name, 
     (
     select interaction_id 
     from queue_interactions q1 
     where q1.origination = q2.origination 
      and ABS(timestampdiff(SECOND, q1.abandon_timestamp, q2.create_timestamp)) < 180 
     order by q2.abandon_timestamp 
     LIMIT 1 
    ) as parent_call 
     from queue_interactions q2 
     where q2.queue_name = "Service Desk VM" 
    ) 
     UNION 
     (
     select interaction_id, origination, create_timestamp, accept_timestamp, abandon_timestamp, queue_name, NULL as parent_call 
     from queue_interactions q3 
     where q3.queue_name = "Service Desk" 
    ) 
) a natural left join agent_interactions agi 
order by a.create_timestamp 
; 
相關問題