2

連絡先の通話試行に関する情報を含むテーブルがあります。関連するフィールドは次のとおりです。

Contact     Date        Result
John Smith  1/8/2013    VM
John Smith  1/9/2013    VM
John Smith  1/10/2013   Busy Signal
John Smith  1/11/2013   Hang Up                   <--- Connect
Jane Smith  1/8/2013    VM
Jane Smith  1/9/2013    Scheduled Call Back       <--- Connect
Jane Smith  1/10/2013   VM
John Doe    1/8/2013    Not Interested            <--- Connect
Jane Doe    1/8/2013    Busy Signal
Jane Doe    1/9/2013    Busy Signal
Jane Doe    1/10/2013   Busy Signal

連絡先で接続するまでの試行回数 (最初の接続後の試行ではありません)、または接続が確立されていない場合のこれまでの試行回数を取得しようとしていますが、問題が発生しています。この場合、接続を意味する結果は、ハングアップ、スケジュールされたコールバック、および興味なしです。

私が取得しようとしているものは次のようになります。

Contact       Attempts
John Smith    4
Jane Smith    2
John Doe      1
Jane Doe      3

これを行う方法はありますか?どんな助けでも大歓迎です。

4

2 に答える 2

2

次の使用を検討する必要がありますGROUP BY

SELECT Contact, COUNT(*) Attempts
FROM Contacts 
WHERE Result NOT IN ('Hang Up','Scheduled Call Back','Not Interested')
GROUP BY Contact

- 編集

OPのリクエストに気づきませんでした。そして、彼が別の答えを受け入れる前にこれを終えることができませんでした...

幸運を。

于 2013-01-31T18:13:57.723 に答える
1

MySQL の場合:

SELECT 
    t.Contact, COUNT(*) AS Attempts
FROM 
    tableX AS t
  JOIN 
          ( SELECT DISTINCT contact
            FROM tableX
          ) AS d
      LEFT JOIN
          ( SELECT contact, 
                   MIN(date) AS date 
            FROM tableX
            WHERE result IN ('Hang Up', 'Scheduled Call Back', 'Not Interested')
            GROUP BY contact
          ) AS g
        ON d.contact = g.contact
    ON  t.contact = d.contact
    AND t.date <= COALESCE(g.date, '9999-12-31')
GROUP BY
    t.contact ;
于 2013-01-31T20:52:39.213 に答える