- Home
- Categorie
- Coding e Sistemistica
- PHP
- Estrarre dati da tabella e fare la media ad intervalli di tempo
-
Estrarre dati da tabella e fare la media ad intervalli di tempo
Ciao a tutti. Mi trovo in una situazione un pò particolare ma non riesco a venirne fuori.
Da una tabella mysql vorrei estrarre tutti i dati di una colonna e fare la media dei valori inclusi ogni ora (ad esempio la media di tutti i valori compresi tra le ore 00:00 e 01:00, poi la media dei valori compresi tra le ore 01:00 e 02:00 e così per il resto di tutti i valori).
Qualcuno ha un consiglio su come muovermi?
Ciao, grazie mille.
-
si, uno!
spiegati meglio e metti la struttura della tabella
-
per ottenere la media devi usare la funzione AVG
-
La cosa difficile è raggruppare per fasce orarie. La soluzione migliore secondo me è scrivere una query SQL che utilizza il costrutto "CASE" per determinare la fascia oraria, per poi raggruppare su fascia oraria e fare la media. (Cerca su google "sql case" e "sql group by range" per avere un po' di esempi su questo costrutto).
-
Ciao! Anche se sembra difficile, te la cavi usando AVG e GROUP BY. Ti faccio un esempio se volessi avere il dato medio del campo_valore, suddiviso per ora e giorno.
Ovviamente puoi limitare il range usando il WHERE:SELECT data_attivita, avg(campo_valore) FROM tab1GROUP BY hour( data_attivita), day(data_attivita)
-
Alessandro, effettivamente la funzione hour rende la query molto più semplice!
-
MySQL è spesso bistrattato, ma sfruttato nel modo giusto da delle soddisfazioni
Tieni presente che, se il tuo scopo è monitorare un valore nel tempo, potresti pensare addirittura ad un time series db, come ad esempio influxDB
-
Ciao ragazzi, scusate se riapro questa discussione ma vorrei richiedervi un consiglio su questo argomento.
Inizialmente vi ho chiesto come effettuare la media dei valori ad intervalli di tempo di 1 ora e mi avete aiutato in maniera eccezionale.
Adesso la situazione è leggermente cambiata.
Inizialmente l'intervallo di tempo la definivo io (1 ora); ora questo intervallo di tempo lo deve scegliere l'utente (può scegliere 1 ora, 30 minuti, 15 minuti). Se ad esempio l'utente sceglie un intervallo di 30 minuti come dovrei modificare la select?
Ciao, grazie mille.
-
Ciao ragazzi.
Nessuno mi sa aiutare?