Mysql 每周统计一次,考虑到截止日期已删除的

Mysql 每周统计一次,考虑到截止日期已删除的,mysql,Mysql,我需要一个计数每周,考虑到删除的一个特定的一周。例如 如果2013年12月29日-2014年01月04日被视为第1周,2014年01月05日-2014年01月11日被视为第2周,则输出应如下所示: ID |Created_Date| Modified_date| Deleted(YN) 1 |01-01-2014 | NULL | 0 2 |01-03-2014 | NULL | 0 3 |01-04-2

我需要一个计数每周,考虑到删除的一个特定的一周。例如 如果2013年12月29日-2014年01月04日被视为第1周,2014年01月05日-2014年01月11日被视为第2周,则输出应如下所示:

ID  |Created_Date|  Modified_date|  Deleted(YN) 
1   |01-01-2014 |   NULL         |     0    
2   |01-03-2014 |   NULL         |     0    
3   |01-04-2014 |01-11-2014      |     1    
4   |01-05-2014 |01-12-2014      |     1    
5   |01-08-2014 |01-17-2014      |     1    
6   |01-09-2014 |   NULL         |     0   
7   |01-20-2014 |   NULL         |     0   
|Date       | count|
|12-29-2013 | 3
|01-04-2014 | 5 (this is because on 11th, there is a deleted record)
查询内容如下:

ID  |Created_Date|  Modified_date|  Deleted(YN) 
1   |01-01-2014 |   NULL         |     0    
2   |01-03-2014 |   NULL         |     0    
3   |01-04-2014 |01-11-2014      |     1    
4   |01-05-2014 |01-12-2014      |     1    
5   |01-08-2014 |01-17-2014      |     1    
6   |01-09-2014 |   NULL         |     0   
7   |01-20-2014 |   NULL         |     0   
|Date       | count|
|12-29-2013 | 3
|01-04-2014 | 5 (this is because on 11th, there is a deleted record)
问题是,它没有考虑前几周删除的数据,也没有给出总计数-已删除计数。请在备选方案上提供帮助。

使用WEEK函数,您的查询将类似

select date_add(created_date, interval(1-DAYOFWEEK(created_date)) DAY)
created_date, count(*) from table1 where 
(date_add(created_date, interval(7-DAYOFWEEK(created_date)) DAY) and deleted=0)
or (deleted = 1 and  modified_date > 
DATE_ADD(created_date, INTERVAL(7-DAYOFWEEK(created_date)) DAY)) 
group by week(created_date)
此外,如果您计划使用此查询获取一年以上的结果,则必须使用YEARWEEK而不是WEEK

查询未经测试,希望在没有修改的情况下可以正常工作

更新意见5:

SELECT WEEK(created_date) as W, 
  COUNT(*) as All, 
  SUM(deleted*SIGN(WEEK(Modified_date)-W)) as Deleted, 
  All - Deleted as Real
FROM table1 
WHERE created_date>='2014-01-01'
GROUP BY W
ORDER BY W;

SQL fiddle

在第一周,没有删除的记录。已删除的记录在第2周。2014年11月1日删除的记录3应仅将第2周的计数显示为已删除,而非第1周。应该考虑删除=1,修改后的日期应该大于当前周,计算删除的计数。由于该记录在第一周未被删除,因此应在第一周将其作为活动计数。感谢您的快速响应,请查看上面的评论以获取发布的查询。查询稍微修改如下:选择w1.w,w1.countall,w1.deleted,w1.countall-w1.deleted from选择WEEKcreated_date as w,计数为CountAll,SUMdeletedSIGNWEEKModified_date-WEEKcreated_date作为从表1中删除的日期,其中创建日期>='2014-01-01'按W顺序分组按W顺序w1。它甚至在deletes下的week1中给出了count 1,其中as week1没有删除。删除的修改日期在第2周。它应该在星期2中计算,而不是星期1数据。结果不应该考虑周一删除的记录3。同样,记录4和记录5计数在第2周删除。记录3计数应出现在第2周的删除中。记录4和5计数应出现在第3周删除中。取决于他们的修改日期。我认为,我们非常接近结果,而这个查询更接近。第一周给出了正确的结果,尝试删除/取消删除,但随后的几周没有给出正确的结果。在本例中,删除计数应仅显示1,但显示2。第3周,它没有显示任何计数,而应该显示2。