2

毎日送信された電子メールの数、送信された電子メールのうち、毎日 "エラー" ステータスになったメールの数、および "キュー" ステータスになったメールの数を数えたいと考えています。

これが私のテーブル構造の例です:

mail_id (int)
date_sent (datetime)
status (tinyint) (1=queue, 2=sent, 3=error)

これが私のクエリです:

SELECT date_sent, 
       COUNT(date_sent) AS total, 
       SUM(IF(status = 3, 1, 0)) errorcount, 
       SUM(IF(status = 1, 1, 0)) queuecount 
FROM sendmail 
GROUP BY date_sent, status

これが私の結果の例です:

date_sent     total errorcount      queuecount
2013-02-11    50       50          10 
2013-02-11     1        0           0
2013-02-11     1        0           0
2013-02-11     1        0           0
2013-02-12     1        0           0
2013-02-12     1        0           0
2013-02-12     1        0           0 
2013-02-12     1        0           0
2013-02-12     1        0           0
2013-02-13     1        0           0
2013-02-13     1        0           0
2013-02-13     1        0           0

たとえば、期間全体で合計 50 件のエラーが発生した場合、すべてのエラー ステータス メールは、エラーが発生した日付に配布されるのではなく、2013 年 1 月 11 日の 1 つの日付にグループ化されました。

これが私の望ましい結果の例です:

date_sent   total           errorcount              queuecount
2013-02-11   4                1                       1 
2013-02-12   5                2                       1
2013-02-13   3                1                       1

どんな援助でも大歓迎です。

私は新しい Web 開発者なので、フォーラムへの投稿は初めてなので、投稿に関するアドバイスや問題があれば参考にしてください。

ありがとう

4

1 に答える 1

4

出力列でさまざまなステータスをカウントしているため、 bydate_sentではなく、by のみでグループ化する必要があります。status

于 2013-10-18T19:19:19.233 に答える