如何计算mysql中的每周数据的月度数据

问题描述:

在我的数据库中,我以周的start_date和week_date_date的每周格式保存了数据,我希望显示每周数据的月度数据,但会引发一个条件,如果任何一个星期在两个月都有,例如(26-4-2013,2-5-2013),所以请计算本周的最近一周的数据。如何计算mysql中的每周数据的月度数据

+0

我认为你应该考虑按日期而不是几周。就像您可以从第1天到第30天或第31天一样获得每月报告,而不考虑本周结束的时间。或者你究竟想达到什么目的? – Richie

+0

我以每周格式保存数据,意味着星期的开始日期和星期的结束日期,但现在我想要这些数据在几个月内,意味着所有这些星期数据在相关月份中的总和,但是如果任何一周在一个月内开始并以另一个月结束,检查一个条件,如果相关周的天数在任何月份超过4或4,则添加本周的数据,否则在下个月添加,对于这种情况我想要mysql查询 –

您需要检查两个条件查询

  1. 如果开始日期为> =“上月的最后一天零下4日”

  2. 如果结束日期是<“的下个月第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被认为是在下个月。