繁体   English   中英

MySQL查询以查找给定日期范围内某个值的出现次数

[英]Mysql query to find number of occurrences of a value in a given date range

我有一个包含7,000,000行和两列的表:一个名称和一个时间戳。 其中的数据如下所示:

NAME  - TIMESTAMP
Arnie - 2012-05-15 09:31:21
Arnie - 2012-05-15 10:31:21
Jethro - 2012-05-15 12:31:21
Regina - 2012-05-15 12:31:21
Beatriz - 2012-05-16 0:31:21
Jethro - 2012-05-15 08:31:21
Jethro - 2012-06-15 08:31:21
Jethro - 2012-06-16 08:31:21
Archie - 2012-06-16 09:31:21
Jethro - 2012-06-17 08:31:21

对于自2012年1月以来的每个月,我想知道该名称在该月出现了多少次,因此对于上面的示例,我希望:

June 2012

Arnie - 2
Jethro - 2
Regina - 1
Beatriz - 1

July 2012

Jethro - 3
Archie - 1

做这个的最好方式是什么? 另外,是否有一种方法可以将其作为一个按月对时间戳进行分组的查询来运行,还是应该只在PHP中进行循环并每月运行一个单独的查询?

我知道这并不是超级困难,并且确实在文档中进行了介绍,但是我对要搜索的术语感到困惑。

您可以使用GROUP BY并获取计数,也可以使用MONTHNAME

SELECT Name, MONTHNAME(TIMESTAMP) AS Month, COUNT(*) AS count
FROM Table1
GROUP BY NAME, MONTHNAME(TIMESTAMP)

尝试这个:

select date_format(timestamp, '%Y %M') as yyyymm, name, count(*)
from table t
group by date_format(timestamp, '%Y %M'), name
order by min(timestamp), name;

请注意,输出格式与您建议的格式略有不同。 这会将年/月作为单独的列添加到每一行。 此格式与关系结果集更加一致。

暂无
暂无

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

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