我有一个包含5行的MySQL表:
email
message_id
date
time
我想计算每天的电子邮件数量。
到目前为止,我有这个
SELECT Date,COUNT(*) AS Num FROM mail2_mailing_log WHERE Id_message=@Id GROUP BY Date ORDER BY Date DESC
但是我们发现脚本存在问题并且许多数据成倍增加(之后已经修复),但我希望能够使用我拥有的数据。
所以基本上我想要“合并”每个电子邮件,日期和时间匹配的所有行,然后按日期分组并计算项目数。
答案 0 :(得分:2)
使用distinct关键字:
SELECT DISTINCT Date,COUNT(*) AS Num FROM mail2_mailing_log WHERE Id_message=@Id GROUP BY Date ORDER BY Date DESC
答案 1 :(得分:2)
SELECT q.date, COUNT(*)
FROM (SELECT DISTINCT email, date, time
FROM mail2_mailing_log
WHERE Id_Message = @Id) q
GROUP BY q.date
ORDER BY q.date DESC
答案 2 :(得分:1)
如果Date列也包含时间,则需要使用DATE_FORMAT()
函数格式化Date列。
SELECT DATE_FORMAT(Date, '%W %M %Y'),COUNT(*) AS Num FROM mail2_mailing_log
WHERE Id_message=@Id GROUP BY DATE_FORMAT(Date, '%W %M %Y')
ORDER BY DATE_FORMAT(Date, '%W %M %Y') DESC