Mysql 每月汇总一次

Mysql 每月汇总一次,mysql,sql,database,querying,Mysql,Sql,Database,Querying,我有一个数据库表,其中包含一列表示初始订阅日期。 我需要一个查询来获取两个特定日期之间存在的记录数,按月份和年份分组。 谁能帮帮我吗。 这是此类表格的一个示例 CREATE TABLE objects( id int primary key, subscription_date date, ) 例如,我想统计从2011年12月12日到2013年12月12日每个月存在的对象 知道之前统计的对象必须在下个月再次统计,因为它们仍然存在,并且在新日期订阅的新对象将被累加。对于月份,您可以这样尝试:-

我有一个数据库表,其中包含一列表示初始订阅日期。 我需要一个查询来获取两个特定日期之间存在的记录数,按月份和年份分组。 谁能帮帮我吗。 这是此类表格的一个示例

CREATE TABLE objects(
id int primary key,
subscription_date date,
)
例如,我想统计从2011年12月12日到2013年12月12日每个月存在的对象
知道之前统计的对象必须在下个月再次统计,因为它们仍然存在,并且在新日期订阅的新对象将被累加。

对于月份,您可以这样尝试:-

SELECT COUNT(val) 
FROM objects
GROUP BY MONTH(subscription_date);
SELECT COUNT(val) 
FROM objects
GROUP BY YEAR(subscription_date);
今年你可以这样尝试:-

SELECT COUNT(val) 
FROM objects
GROUP BY MONTH(subscription_date);
SELECT COUNT(val) 
FROM objects
GROUP BY YEAR(subscription_date);

希望这能对您有所帮助。

一种方法是创建日期列表,并使用相关子查询或联接/聚合进行计算。假设您每月至少有一次订阅,以下是一种方法:

select ym.yr, ym.mon,
       (select count(*)
        from objects o
        where year(o.date) = ym.yr and month(o.date) = ym.mon
       ) as cnt
from (select distinct year(date) as yr, month(date) as mon
      from objects
      where date between '2011-12-12' and '2013-12-12'
     ) ym;

您的输出应该是什么样子还不清楚。请添加示例值以及您希望从查询中获得的输出。这将要求Ali运行此查询24次,并对结果进行操作,以获取“从2011年12月12日到2013年12月12日”的数据。感谢您的帮助,并为我的延迟回复表示歉意。我注意到,使用数据仓库和数据挖掘技术可以很容易地解决这个问题。