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

SQL Beregn den gennemsnitlige tidsforskel mellem de samlede rækker

Hvis du vil vide, hvor ofte (i gennemsnit) en række blev indsat, tror jeg ikke, du skal udregne alle forskellene. Du behøver kun at opsummere forskellene mellem tilstødende rækker (tilstødende baseret på tidsstemplet) og dividere resultatet med antallet af summeringer.

Formlen

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

kan åbenbart forenkles til blot

(TN-T0) / N

Så forespørgslen ville være sådan her:

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

Sørg for, at antallet af rækker er mere end 1, ellers får du fejlen Division By Zero. Alligevel, hvis du vil, kan du forhindre fejlen med et simpelt trick:

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

Nu kan du sikkert køre forespørgslen mod en tabel med en enkelt række.



  1. Tekstsøgning på tværs af flere felter MySQL

  2. SQL-fejl (1215):Kan ikke tilføje en begrænsning af en fremmednøgle

  3. Få resterende dage, timer og minutter ved at bruge mySql

  4. Hvordan trækker man en saltet adgangskode tilbage fra databasen og godkendelsesbrugeren?