SQL-按日期对事件求和(每次5天)

SQL-按日期对事件求和(每次5天),sql,sql-server-2008,datepart,Sql,Sql Server 2008,Datepart,我想做的是计算给定数据范围内5天内的呼叫中心事件数;如果事件计数超过(例如)10,我需要通知经理。我已经创建了包含日期及其响应呼叫中心事件计数的数据集 Date Events w01 w02 w03 w04 w05 11/01/2011 5 * 11/02/2011 2 * * 11/03/2011 4 * * * 11/04/2011 1 * * * * 11/05/2

我想做的是计算给定数据范围内5天内的呼叫中心事件数;如果事件计数超过(例如)10,我需要通知经理。我已经创建了包含日期及其响应呼叫中心事件计数的数据集

  Date      Events   w01 w02 w03 w04 w05
11/01/2011    5       * 
11/02/2011    2       *   *     
11/03/2011    4       *   *   *
11/04/2011    1       *   *   *   *
11/05/2011    0       *   *   *   *   *
11/06/2011    2           *   *   *   *
11/07/2011    7               *   *   *
11/08/2011    0                   *   *
11/09/2011    5                       *


I would like to have the results in this format
w01: 12 events
w02:  7 events
w03: 14 events (alert sent)
w04: 10 events
w05: 14 events (alert sent)
我需要弄清楚如何以连续5天为一组进行查询,并对事件数求和。差不多

select sum(events)
from tablename
group by datepart(dd, date) * 5
但这是行不通的。我的选择是可怕的foreach date循环,将date和date+5之间的事件相加。我宁愿不那样做

如能朝正确方向轻推,将不胜感激


谢谢。

您可以尝试以下方法:

select
    Date,
    (select sum(events)
     from tablename d2
     where abs(datediff(DAY, d1.Date, d2.Date)) <= 2) as EventCount
from
    tablename d1
where
    Date between '11/03/2011' and '11/07/2011'

你可以用一年中的某一天。比如:

选择datepart(dy,eventdate)/5作为间隔号和(事件)
从表名
按日期分组部分(dy,eventdate)/5

显然,当一年过去的时候,这会结束,但这是一个开始。

这将创建5天的不相交集合,而不是OP描述的重叠集合。
Date        EventCount
11/03/2011  12
11/04/2011  9  ** Note that the correct value for w02 is 9, not 7
11/05/2011  14
11/06/2011  10
11/07/2011  14