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日”的数据。感谢您的帮助,并为我的延迟回复表示歉意。我注意到,使用数据仓库和数据挖掘技术可以很容易地解决这个问题。