我有一个名为事件的 MYSQL 数据库表。在此表中,我有以下列
index | timestamp | email
我想选择每个电子邮件地址在两个时间戳之间出现的次数。
到目前为止我可以做到这一点:
"SELECT `email`, count(*) FROM `incidents` GROUP BY `email` ORDER BY count(*) DESC;
上面的查询有效,并为我提供了所有唯一电子邮件地址的列表,这些电子邮件地址按出现次数排序。但是它不考虑时间戳。
理想情况下,我想在一个查询中执行如下操作:
SELECT `email`, `timestamp` FROM `incidents` WHERE `timestamp` BETWEEN '2015-12-01 00:00:00' AND '2015-12-30 23:59:59';
COUNT(*) GROUP BY `email` ORDER BY count(*) DESC;
这将选择两个时间戳之间的所有记录,然后计算每个电子邮件地址出现的次数并按此计数排序。如何在一次查询中实现这一目标?
最佳答案
在您的第一个查询中简单地添加一个 WHERE
子句会有什么问题吗?
SELECT `email`, COUNT(*)
FROM `incidents`
WHERE `timestamp` BETWEEN '2015-12-01 00:00:00' AND '2015-12-30 23:59:59'
GROUP BY `email`
ORDER BY COUNT(*) DESC
关于mysql - 选择两个时间戳之间的所有记录,然后按某个值出现的次数进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539052/