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

时间:2017-05-27 03:59:23

标签: mysql

在我的数据库中,我以每周格式保存数据,例如start_date of week和end_date of week,我想显示每周数据的月度数据,但是如果任何一周在两个月都有,那么就会提出一个条件(26- 4-2013,2-5-2013),所以计算本周的数据,其中包含最长的工作日数。

2 个答案:

答案 0 :(得分:1)

您需要在查询中检查两个条件

  1. 如果开始日期为> =“上个月的最后日期减去4天”

  2. 如果结束日期是< “下个月的第4天”

  3. 这应该提供相关数据。

答案 1 :(得分:0)

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列的日期是否大于3,然后从end_date列中选择month,否则选择month 来自start_date专栏。

select if(day(end_date) > 3, month(end_date), month(start_date)) as monthname,sum(value)
from data
group by monthname

您可以在下个月看到id = 5。