我想統計每天發送多少封電子郵件,發送的電子郵件數量每天都有「錯誤」狀態,每天有多少個「隊列」狀態。MySql計數分爲3列
這是我的表結構的一個例子:
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個錯誤,則所有錯誤狀態電子郵件被分組到一個日期20而不是分發到他們發生的日期。
這裏是我想要的結果的例子:
date_sent total errorcount queuecount
2013-02-11 4 1 1
2013-02-12 5 2 1
2013-02-13 3 1 1
任何援助將不勝感激。
這是我第一次發表任何論壇,因爲我是一個新的Web開發人員,所以任何意見或問題與我發佈會有所幫助。
感謝
此外,我忽略提及所有的錯誤狀態電子郵件將有一個date_sent值爲null(「0000-00-00 00:00:00」),但我確實控制這種情況與ifnull和使用If語句DATE_FORMAT函數用有效值替換NULL值(在這種情況下,這是電子郵件請求的日期) – user2895962
以下是包含date_sent值檢查的查詢: – user2895962
IF(DATE_FORMAT(date_sent,'%Y ')='0000',date_entered,date_sent))AS date_sent, \t COUNT(IF(DATE_FORMAT(date_sent,'%Y')='0000',DATE_FORMAT(date_entered,'%Y-%m-%d') ,DATE_FORMAT(date_sent,'%Y-%m-%d')))總計 \t SUM(IF(status = 3,1,0))errorcount, \t SUM atus = 1,1,0))queuecount FROM sendmail GROUP BY DATE_FORMAT(date_sent,'%Y-%m-%d') – user2895962