Mysql
 sql >> Database >  >> RDS >> Mysql

Come trovare la differenza di tempo media tra le righe in una tabella?

Se la tua tabella è t e la colonna del timestamp è ts e desideri la risposta in pochi secondi:

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t

Questo sarà molto più veloce per i tavoli di grandi dimensioni in quanto non ha N-squared JOIN

Questo usa un simpatico trucco matematico che aiuta con questo problema. Ignora per il momento il problema dei duplicati. La differenza di tempo media tra righe consecutive è la differenza tra il primo timestamp e l'ultimo timestamp, divisa per il numero di righe -1.

Dimostrazione:La distanza media tra file consecutive è la somma della distanza tra file consecutive, divisa per il numero di file consecutive. Ma la somma della differenza tra righe consecutive è solo la distanza tra la prima riga e l'ultima riga (supponendo che siano ordinate per timestamp). E il numero di righe consecutive è il numero totale di righe -1.

Quindi condizioniremo semplicemente i timestamp in modo che siano distinti.