Se la tabella è t, e la vostra colonna timestamp è ts, e si desidera la risposta in pochi secondi:
SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts))
/
(COUNT(DISTINCT(ts)) -1)
FROM t
Questo sarà miglia più veloce per i tavoli di grandi dimensioni in quanto non ha n-quadrato JOIN
Questo utilizza un trucco matematico carino che aiuta con questo problema. Ignora il problema dei duplicati per il momento. La differenza di tempo media tra le righe consecutive è la differenza tra il primo timestamp e l'ultimo timestamp, diviso per il numero di righe -1.
Dimostrazione: la distanza media tra le righe consecutive è la somma della distanza tra le righe consecutive, divisa per il numero di righe consecutive. Ma la somma della differenza tra le righe consecutive è solo la distanza tra la prima riga e l'ultima riga (supponendo che siano ordinate per data/ora). E il numero di righe consecutive è il numero totale di righe -1.
Quindi dobbiamo solo condizionare i timestamp per essere distinti.
fonte
2009-05-18 10:18:52
Grazie, è fantastico. –
Brillante. Ottima risposta per aggirare la possibile duplicazione dei timestamp. – Bell
Ben fatto. La matematica semplice è sempre l'opzione migliore. – Rob