Mysql 选择两个时间戳之间的所有记录,然后按值的出现次数分组
我有一个名为Events的MYSQL数据库表。在这个表中,我有以下几列Mysql 选择两个时间戳之间的所有记录,然后按值的出现次数分组,mysql,sql,Mysql,Sql,我有一个名为Events的MYSQL数据库表。在这个表中,我有以下几列 index | timestamp | email 我想选择每个电子邮件地址在两个时间戳之间出现的次数 到目前为止,我可以做到: "SELECT `email`, count(*) FROM `incidents` GROUP BY `email` ORDER BY count(*) DESC; 上面的查询工作正常,并提供了一个按出现次数排序的所有唯一电子邮件地址的列表。但是,它没有考虑时间戳 理想情况下,我希望在一个
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
简单地在第一个查询中添加
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
有几种方法可以做到这一点。下面是一个带有子查询的:
SELECT A.email,
COUNT(*)
FROM (SELECT *
FROM incidents
WHERE timestamp BETWEEN '2015-12-01 00:00:00' AND '2015-12-30 23:59:59'
) A
GROUP BY A.email
ORDER BY COUNT(*)
这可能不是最有效的方法,但取决于表的大小。有几种方法可以做到这一点。下面是一个带有子查询的:
SELECT A.email,
COUNT(*)
FROM (SELECT *
FROM incidents
WHERE timestamp BETWEEN '2015-12-01 00:00:00' AND '2015-12-30 23:59:59'
) A
GROUP BY A.email
ORDER BY COUNT(*)
根据表格的大小,这可能不是最有效的方法。选择count(*)作为cnt、email、来自
事件的时间戳
,其中时间戳介于“2015-12-24 12:00:00”和“2015-12-24 12:30:00”之间,按cnt的电子邮件顺序分组,假设相同的时间戳适用于所有电子邮件,您只需将WHERE条件添加到原始查询中即可做到这一点,如:SELECT email,count(*)FROM incents WHERE timestamp介于“2015-12-01 00:00:00”和“2015-12-30 23:59:59”之间的事件按电子邮件顺序分组按计数(*)DESC代码>选择计数(*)作为cnt、电子邮件、事件中的时间戳,其中时间戳介于“2015-12-24 12:00:00”和“2015-12-24 12:30:00”之间,按电子邮件顺序分组,按cnt描述假设相同的时间戳适用于所有电子邮件,您只需将where条件添加到原始查询中即可完成此操作,如:选择电子邮件,计数(*)从时间戳介于“2015-12-01 00:00:00”和“2015-12-30 23:59:59”之间的事件中,通过电子邮件按计数分组(*)DESC;
@PhiterFernandes感谢您设置小提琴。感谢您的帮助:)我想我有所有的关键成分,但就是不能把它们放在一起。@PhiterFernandes谢谢你摆好小提琴。谢谢你的帮助:)我想我有所有的关键成分,但就是不能把它们放在一起。