sql >> Databáze >  >> RDS >> Mysql

SQL Vypočítejte průměrný časový rozdíl mezi celkovými řádky

Pokud chcete vědět, jak často (v průměru) byl řádek vložen, myslím, že nemusíte počítat všechny rozdíly. Stačí sečíst rozdíly mezi sousedními řádky (sousedícími na základě časového razítka) a výsledek vydělit počtem sčítanců.

Vzorec

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

lze samozřejmě zjednodušit na pouhý

(TN-T0) / N

Takže dotaz by byl něco takového:

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

Ujistěte se, že počet řádků je větší než 1, jinak se zobrazí chyba Dělení nulou. Přesto, pokud chcete, můžete chybě předejít jednoduchým trikem:

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

Nyní můžete bezpečně spustit dotaz proti tabulce s jedním řádkem.



  1. Vztah více identických entit

  2. Vyloučit horní a dolní n řádky v SQL

  3. sqljocky synchronně dotazuje databázi

  4. Časový limit vypršel pgadmin Nelze se připojit k serveru