mysql - 选择两个时间戳之间的所有记录,然后按某个值出现的次数进行分组

标签 mysql sql

我有一个名为事件的 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/

相关文章:

sql - 直接执行语句和从存储过程执行语句时的执行计划不同

php - 查询根据一个字段的最大值和另一字段的特定值查找数据

mysql - 如何根据单次更新查询的另一列中的值更新一列中的值?

MySQL 多子查询

mysql - 为什么带有方括号/圆括号的 UNION SELECT 返回不同的总行数

java - JPA 在 MySQLIntegrityConstraintViolationException 中插入父/子结果

php - 解释 mysqldumpslow 结果

mysql - 在 HABTM 关系上执行 ActiveRecord 查找时 SQL 速度缓慢

sql - 在 sql 数据库 vb.net 中插入数据未被存储

MySQL 选择不同但仅当所有第二列 = 1 时?