SQL - sommando eventi per data (5 giorni alla volta)
-
25-10-2019 - |
Domanda
Quello che sto cercando di fare è calcolare il numero di eventi di call center per un periodo di 5 giorni di scorrimento per un determinato intervallo di dati; se il conteggio degli eventi supera (per esempio) 10, ho bisogno di avvertire i gestori. Ho già creato il set di dati che contiene le date e le loro cooresponding call center conteggi degli eventi.
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)
in qualche modo bisogno di capire come interrogare questo in gruppi di 5 giorni contigui e somma il numero di eventi. Qualcosa di simile
select sum(events)
from tablename
group by datepart(dd, date) * 5
, ma che non funziona bene. La mia alternativa è il ciclo foreach data temuto, sommando l'evento tra la data e la data + 5. Io preferirei non farlo.
Una spinta nella direzione giusta sarebbe apprezzato.
Grazie.
Soluzione
Si può provare qualcosa di simile:
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'
Esempio di output:
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
Altri suggerimenti
Si potrebbe utilizzare il giorno dell'anno. Qualcosa di simile:
select datepart(dy, eventdate)/5 AS IntervalNo, sum(events)
from tablename
group by datepart(dy,eventdate)/5
Ovviamente questo sarebbe caduta su quando i rotoli anno sopra, ma è un inizio.