Dominik ha scritto:
Innanzitutto ringrazio per avermi risposto.
Forse sono stato poco chiaro.
Io ho una tabella contenente 8760 righe e 2 colonne.
La prima colonna contiene la data in formato (dd/mm/yyyy hh:mm) e la seconda un valore numerico corrispondente ad una concentrazione .
Quello che la Query o una funzione in VBA voglio che faccia è andare a calcolare la media di 8 ore, partendo dai primi 8 dati e man man scendendo di un ora andare a calcolare le altre medie di 8 ore.
Dovendo poi attribuire il valore della media calcolata alla prima ora dell'intervallo.
E' quindi una media aritmetica ma mobile.
Grazie per la pazienza.
Secondo me ti sei spiegato...
Per fare la media di 8 Ore serve creare un campo calcolato aggregatore che ti consente di effettuare la Media avendo come elemento di partenza la concentrazione.
L'esempio è questo:
SELECT Exp(Sum(Log(Evento)*Frequenza)/Sum(Frequenza)) AS MediaGp FROM Tabella1
La frequenza è la tua Concentrazione...
Ora se fai una Query che ricrea gli STEP delle 8 Ore aggregati e la metti in JOIN con la tabella di base... forse...
Come fare un campo Aggregato calcolato che divida la giornata in 3 Blocchi da 8 ore...?
Esempio:
Campo8Ore:Format(CampoDataOra,"dd/mm/yyyy") & "-" & Hour(CampoDataOra) \8
Restituisce un valore Stringa aggregato con queste caratteristiche
11/10/2018 00:00 ---> 11/10/2018-0
11/10/2018 07:59 ---> 11/10/2018-0
11/10/2018 08:00 ---> 11/10/2018-1
11/10/2018 15:59 ---> 11/10/2018-1
11/10/2018 16:00 ---> 11/10/2018-2
11/10/2018 23:59 ---> 11/10/2018-2
Ecco ora hai il campo utile per l'aggregazione [Campo8Ore].
Fai attenzione al BackSlash usato per dividere... che funziona come Int(Ora/8)....