[MySQL]MySQL数据库中如何统计一段时间内以某个字段分组的年/月总数?

MySQL 作者: Rector 57阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

MySQL数据库中,如何统计一段时间内以某个字段分组的年/月总数。假如有一个TIMESTAMP类型的字段record_date,和MySQL查询的伪代码,如下:

SELECT COUNT(id)
FROM stats
WHERE record_date.YEAR = 2009
GROUP BY record_date.YEAR

或者,按照年/月进行分组统计的伪代码,如下:

SELECT COUNT(id)
FROM stats
GROUP BY record_date.YEAR, record_date.MONTH

MySQL数据库中,如何实现以上伪代码的按年,月的分组统计呢?

方案一

SELECT COUNT(id)
FROM stats
WHERE record_date.YEAR = 2009
GROUP BY YEAR(record_date), MONTH(record_date)

方案二

使用MySQLDATE_FORMAT函数,如下:

SELECT COUNT(id)
FROM stats
WHERE record_date.YEAR = 2009
GROUP BY DATE_FORMAT(record_date, '%Y%m')

方案三

使用MySQLEXTRACT函数,如下:

SELECT COUNT(id)
FROM stats
GROUP BY EXTRACT(YEAR_MONTH FROM record_date)

方案四

如果你的MySQL数据库中的数据已经很多了,那么建议:

版本一:

SELECT SQL_NO_CACHE YEAR(record_date), MONTH(record_date), COUNT(*)
FROM stats
GROUP BY DATE_FORMAT(record_date, '%Y%m')

或者

版本二:

SELECT SQL_NO_CACHE YEAR(record_date), MONTH(record_date), COUNT(*)
FROM stats
GROUP BY YEAR(record_date)*100 + MONTH(record_date)

相比之下,版本二的性能更好,查询速度更快。

方案五

使用MySQLDAYOFMONTH函数,如下:

 SELECT COUNT(id)
 FROM stats
 GROUP BY DAYOFMONTH(record_date)

阅读了该文章的人还浏览了...

本文永久链接图享网 » [MySQL]MySQL数据库中如何统计一段时间内以某个字段分组的年/月总数?

发布于: 2018-04-23 16:37:24
分享扩散:

文章评论

获取验证码