帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】如何使用MySQL查询一年中每月的记录数

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio

以下演示将在下表数据中进行:

其中:id为主键用于表的连接;value1为需要统计的主体,如用户等;date为记录日期。

先说结论

思路及SQL解释

这个问题可以划分为如下几个子问题,我们可以挨个分析解决:

1. 如何以月份划分

对于一个月份的数据可以如下判断:

3.统计每月数据

在ct这一列中,我们获取的数据是有规律的,比如一个日期中会有两个"-"、两个日期之间以",“分隔。

这里我们选择以”,"为标志,统计出有多少个分隔符,再+1就得到了数据的数量。

至于实现方式,可以使用如下方式:


LENGTH(tmp.ct) – LENGTH(REPLACE(tmp.ct, ‘,’, ”)) + 1

4.统计值与月份相对应

取得GROUP_CONCAT获取的第一个日期即可代表这一整个数据所在的月份。

可以使用SUBSTRING_INDEX()函数,它有三个参数,第一个参数为待片取的字符串、第二个参数为分隔符、第三个参数为第几个截取到第几个分隔符。

如此一来:


SUBSTRING_INDEX(tmp.ct, ‘,’, 1)

便可以取到该日期,再使用MONTH函数即可获取对应的月份。

5.总体整合

我这里是使用了一次子查询,子查询获取对应的分组及GROUP_CONCAT数据,再交由外查询进行处理。

结语

这里给出的方案仅仅是一种方案,也许存在着其他更快更好的解决方案但我没有想到,在复杂问题面前一步一步获取小数据是我习惯,这也就使得很可能出现多个嵌套着的子查询。

到此这篇关于如何使用MySQL查询一年中每月的记录数的文章就介绍到这了,更多相关MySQL查询每月记录数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


联系我们
返回顶部