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

しかし、それは正しく機能していません。私の代替手段は、日付と日付 + 5 の間のイベントを合計する、恐ろしい foreach 日付ループです。

正しい方向へのナッジをいただければ幸いです。

ありがとう。

4

2 に答える 2

3

次のようなことを試すことができます:

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'

出力例:

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
于 2011-11-29T05:06:10.437 に答える
1

年中日を使用できます。何かのようなもの:

select datepart(dy, eventdate)/5 AS IntervalNo, sum(events)
from tablename
group by datepart(dy,eventdate)/5

明らかに、それは年が変わったときに崩壊するでしょうが、それは始まりです.

于 2011-11-29T05:07:05.367 に答える