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

SQL Calcola la differenza di tempo media tra le righe totali

Se vuoi sapere con quale frequenza (in media) è stata inserita una riga, non credo che tu debba calcolare tutte le differenze. Devi solo sommare le differenze tra righe adiacenti (adiacenti in base al timestamp) e dividere il risultato per il numero delle somme.

La formula

((T1-T0) + (T2-T1) + … + (TN-TN-1)) / N

può ovviamente essere semplificato semplicemente

(TN-T0) / N

Quindi, la query sarebbe qualcosa del genere:

SELECT TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / (COUNT(*) - 1)
FROM atable

Assicurati che il numero di righe sia maggiore di 1 o otterrai l'errore Division By Zero. Tuttavia, se vuoi, puoi prevenire l'errore con un semplice trucco:

SELECT
  IFNULL(TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / NULLIF(COUNT(*) - 1, 0), 0)
FROM atable

Ora puoi eseguire in sicurezza la query su una tabella con una singola riga.