2016-12-17 11 views
3

私はmysqlで解決する問題があります。私はMYSQLツールを使用しています。私はコールセンターのメッセージログを扱います。 Message_Repliesに対応するテーブルがあるとします。その列は「id」、「responder」、「timestamp」です。レスポンダは、 'agent'、 'user'の2つの値を持つことができます.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'で取得し、このタイムスタンプを減算して応答時間を取得することです。次に、 'user'の最初のエントリと 'agent'の次の最初のエントリを取得し、時間の差異を取得します。つまり、2つの継続返信が 'user'からのものである場合、私は最初の返信を 'user'で取得し、次に 'agent'の最初のエントリを取得し、時間差を取得する必要があります。私は、最初のユーザーからの最初の返信と、次の最初の返信の時間差をどのように取得するのか分からない。

+1

各レコードにもタイムスタンプがありますか?これはギャップや島の問題のように思えます。 –

+0

私はあなたのテーブルが(少なくとも)会話**に焦点を当てることを可能にする1つのフィールドを逃しているようです。つまり、あなたのテーブルには、多くのユーザーと多くのエージェント(1つのエージェントが複数のユーザーとアクティブな会話を行う場合がある)との会話が格納されているように見えます。 – FDavidov

+0

これはサンプルデータと望ましい結果で実際より明確になります。 –

答えて

0

以下を試すことができます 1. tempテーブルを作成して、メッセージのselectクエリを使用してレスポンダ=最小タイムスタンプとメッセージのIDでグループ化するt1というテーブルを作成します。 2.別の一時テーブルt2を作成し、メッセージのselectクエリを使用してデータを挿入します。レスポンダ=最大タイムスタンプを持つエージェントとメッセージIDのグループ化 3.メッセージ(チケット)の応答時間を取得するために結合と日付の減算を使用します。