如何计算mysql中的每周数据的月度数据
问题描述:
在我的数据库中,我以周的start_date和week_date_date的每周格式保存了数据,我希望显示每周数据的月度数据,但会引发一个条件,如果任何一个星期在两个月都有,例如(26-4-2013,2-5-2013),所以请计算本周的最近一周的数据。如何计算mysql中的每周数据的月度数据
答
您需要检查两个条件查询
如果开始日期为> =“上月的最后一天零下4日”
如果结束日期是<“的下个月第4天“
这应该给出相关数据。
答
DROP TABLE IF EXISTS `data`;
CREATE TABLE `data` (
`id` int(11) NOT NULL,
`start_date` date DEFAULT NULL,
`end_date` date DEFAULT NULL,
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
我已经根据您的上述示例插入了数据。如果示例数据不正确,请告诉我。
INSERT INTO `data` VALUES (1,'2013-03-01','2013-03-07',10),(2,'2013-03-08','2013-03-14',50),(3,'2013-03-15','2013-03-21',60),(4,'2013-03-22','2013-03-28',30),(5,'2013-03-29','2013-04-04',80),(6,'2013-04-05','2013-04-11',90),(7,'2013-04-12','2013-04-18',70),(8,'2013-04-19','2013-04-25',20),(9,'2013-04-26','2013-05-02',40);
检查END_DATE列的一天,如果它是从起始日期栏END_DATE列别的选择一个月 大于3,然后选择一个月。
select if(day(end_date) > 3, month(end_date), month(start_date)) as monthname,sum(value)
from data
group by monthname
你可以看到id = 5被认为是在下个月。
我认为你应该考虑按日期而不是几周。就像您可以从第1天到第30天或第31天一样获得每月报告,而不考虑本周结束的时间。或者你究竟想达到什么目的? – Richie
我以每周格式保存数据,意味着星期的开始日期和星期的结束日期,但现在我想要这些数据在几个月内,意味着所有这些星期数据在相关月份中的总和,但是如果任何一周在一个月内开始并以另一个月结束,检查一个条件,如果相关周的天数在任何月份超过4或4,则添加本周的数据,否则在下个月添加,对于这种情况我想要mysql查询 –