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

问题描述

在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)

方案二

使用MySQL的DATE_FORMAT函数,如下:

SELECT COUNT(id)

FROM stats

WHERE record_date.YEAR = 2009

GROUP BY DATE_FORMAT(record_date, '%Y%m')

方案三

使用MySQL的EXTRACT函数,如下:

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)相比之下,版本二的性能更好,查询速度更快。

方案五

使用MySQL的DAYOFMONTH函数,如下:

SELECT COUNT(id)

FROM stats

GROUP BY DAYOFMONTH(record_date)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值