sql >> Databasteknik >  >> RDS >> Mysql

SQL Beräkna den genomsnittliga tidsskillnaden mellan det totala antalet rader

Om du vill veta hur ofta (i genomsnitt) en rad infogats tror jag inte att du behöver räkna ut alla skillnader. Du behöver bara summera skillnaderna mellan intilliggande rader (intilliggande baserat på tidsstämpeln) och dividera resultatet med antalet summeringar.

Formeln

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

kan uppenbarligen förenklas till enbart

(TN-T0) / N

Så frågan skulle vara ungefär så här:

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

Se till att antalet rader är fler än 1, annars får du felet Division By Noll. Men om du vill kan du förhindra felet med ett enkelt trick:

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

Nu kan du säkert köra frågan mot en tabell med en enda rad.



  1. Jag vill ha en trigger för att DELETE från 2 tabeller i MySQL

  2. ORDER BY Subquery för GROUP BY to JOIN-konvertering

  3. kan inte få enkel PostgreSQL-insättning att fungera

  4. Ställ in maximal körningstid i MYSQL / PHP