Ho una tabella denominata Sessioni con due colonne datetime: start e end.MySQL: ottieni una media delle differenze di orario?
Per ogni giorno (AAAA-MM-GG) possono esserci molti orari di inizio e fine diversi (HH: ii: ss). Devo trovare una media giornaliera di tutte le differenze tra questi orari di inizio e di fine.
Un esempio di poche righe sarebbe:
start: 2010-04-10 12:30:00 end: 2010-04-10 12:30:50
start: 2010-04-10 13:20:00 end: 2010-04-10 13:21:00
start: 2010-04-10 14:10:00 end: 2010-04-10 14:15:00
start: 2010-04-10 15:45:00 end: 2010-04-10 15:45:05
start: 2010-05-10 09:12:00 end: 2010-05-10 09:13:12
...
Le differenze di tempo (in secondi) per 2010-04-10 sarebbe:
50
60
300
5
La media per 2010-04- 10 sarebbe 103,75 secondi. Vorrei che il mio query per restituire qualcosa di simile:
day: 2010-04-10 ave: 103.75
day: 2010-05-10 ave: 72
...
posso ottenere la differenza di tempo raggruppati per data di inizio ma non sono sicuro di come ottenere la media. Ho provato a utilizzare la funzione di AVG, ma penso che funzioni solo direttamente sui valori delle colonne (piuttosto che sul risultato di un'altra funzione di aggregazione).
Questo è quello che ho:
SELECT
TIME_TO_SEC(TIMEDIFF(end,start)) AS timediff
FROM
Sessions
GROUP BY
DATE(start)
C'è un modo per ottenere la media di TimeDiff a ogni accensione data? Sono nuovo per aggregare le funzioni, quindi forse sto fraintendendo qualcosa. Se si conosce una soluzione alternativa, si prega di condividere.
Potrei sempre farlo ad hoc e calcolare la media manualmente in PHP, ma mi chiedo se c'è un modo per farlo in MySQL, così posso evitare di eseguire una serie di loop.
Grazie.
Sì, è così, l'ho capito non appena ho postato la domanda. Mi sento un po 'stupido. Il motivo per cui non sono riuscito a farlo funzionare è che stavo facendo AVG (timediff), e suppongo che tu debba passare direttamente l'espressione e non possa usare un alias. Grazie. – nebs