繁体   English   中英

MySQL计数按3列分组

[英]MySql count grouping by 3 columns

我想计算每天发送的电子邮件数量,每天发送的电子邮件中有“错误”状态以及每天有多少邮件处于“排队”状态。

这是我的表结构的示例:

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-01-11,而不是分配到它们发生的日期。

这是我期望的结果的一个示例:

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 ,而不date_sent status分组,因为您要在输出列中计算不同的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM