2016-12-17 132 views
3

我有一個問題要解決在MySQL中。我正在使用MYSQL工具。我處理呼叫中心消息日誌。假設我有一個對應於Message_Replies的表。它的列是'id','responder','timestamp'。響應者可以有兩個值: - 'agent','user'。responder ='agent'的條目是我們的代理人回覆的條目,而responder ='user'的條目是用戶回覆的條目。複雜的SQL查詢邏輯

Say we have a sequences of messages like this:- User, Agent, User, User, Agent, User, User, Agent, User, Agent.

我希望得到平均響應時間爲這張票。理想的方式是通過'user'獲取第一個消息時間戳,然後通過'agent'獲取第一個消息時間戳,並減去此時間戳以獲取響應時間。接下來獲得'用戶'的第一個條目和'代理'的下一個第一個條目,並獲得他們的時間不同。即如果兩個繼續回覆來自'用戶',那麼我必須通過'用戶'來獲得第一個回覆,並獲取下一個'代理人'的第一個回答,並獲得他們的時間差。我沒有得到如何獲得用戶首次回覆的時間差和代理的下一首答覆。

有什麼建議?

+1

每個記錄是否也有時間戳?這聽起來像是一個空白和孤島問題。 –

+0

我看起來你的表錯過了(至少)一個字段,可以正確聚焦到**對話**。我的意思是,您的表似乎存儲了許多用戶和許多代理之間的對話(此外,單個代理可能與多個用戶進行主動對話)。 – FDavidov

+0

這對於樣本數據和期望的結果來說會更清楚。 –

回答

0

你可以嘗試下面 1.創建一個臨時表讓我們說t1和插入數據到它使用選擇查詢的消息,其中responder =用戶與最小時間戳和消息的ID分組。 2.創建另一個臨時表t2,使用select message查詢消息,其中responder =具有最大時間戳的代理並按消息ID分組 3.現在使用連接和日期減法獲得消息響應時間(票據)