38 messaggi dal 21 maggio 2003
Ho questo problema:
ho delle tabelle in un DB, che possono variare da 2 a n
queste tabelle hanno i campi con lo stesso nome
Sensore Data Ora Velocità
Quindi ho una tabella per ogni anno differente
Il mio problema è che dovrei fare la media del campo Velocità a seconda di quale periodo è stato scelto. Cioè se ho un periodo che va ad es dal 1 Gennaio 2002 al 30 Settembre 2003, allora dovrò chiamare in causa le due tabelle Storico2002 e Storico2003. Non mi permettono di creare viste e quindi non mi sono venute in mente grandi idee
Qualche suggerimento?

879 messaggi dal 09 luglio 2002
www.i-studio.it
Se devi fare la media della somma di una serie di valori (cioe' tutti quelli contenuti nelle varie tabella dei vari periodi), puoi anche fare la media delle medie.
Cioe', se devi fare la media dei valori per l'anno 2002 e per l'anno 2003, allora potresti calcolarti prima la media per l'anno 2002, poi la media per l'anno 2003 e infine fai la media tra questi valori.
Cosi' dovrebbe essere piu' semplice, non ti pare?

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
38 messaggi dal 21 maggio 2003
La media deve essere fatta per ogni ora del giorno, quindi supponendo di prendere in esame due tabelle dovrei prendere ad es la media calcolata per l'ora 1 della prima tabella e la media calcolata dell'ora 1 della seconda tabella... e questo per tutte le 24 ore. Forse dovrei salvarmi le medie parziali in dei record (uno per ogni anno) e poi fare la media delle medie. L'unico problema è che potrei avere ad es x la prima tabella dati disponibili per l'ora 1 e non avere dati disponibile per l'ora 1 nella seconda tabella, insomma un macello!!!
879 messaggi dal 09 luglio 2002
www.i-studio.it
Forse la cosa non e' cosi' complicata...
Supponiamo che riesci a mettere in un array (chiamato arrayAnni) i vari anni per i quali devi fare le medie e che hai un altro Array (chiamato ArrayMediaOre) dove memorizzi le medie per ogni ora. Allora, immagina di fare una cosa del genere:

for i=0 to 23 '<---- le ore
mediaOraria = 0
sommaMedia = 0
for t=0 to ubound(arrayAnni)
nomeTabella = "storico" & cStr(arrayAnni(t))
sql = "SELECT (Sum(velocita)/count(*)) as media FROM " & nomeTabella & " WHERE Hour(ora) = " & cStr(i)
rs.open sql, conn
mediaTabella = rs("media")
rs.close
sommaMedia = sommaMedia + mediaTabella
next
mediaOraria = sommaMedia / (ubound(arrayAnni)+1)
ArrayMediaOre(i) = mediaOraria
next


Alla fine di questo codice avrai nell'array ArrayMediaOre tutte le medie per ogni ora. Non so se hai bisogno di altri filtri nella query ma il senso generale dovrebbe essere questo.

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.