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

Jak zjistit průměrný časový rozdíl mezi řádky v tabulce?

Pokud je vaše tabulka t a sloupec časového razítka je ts a chcete odpověď v sekundách:

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

U velkých stolů to bude míle rychlejší, protože nemá n-squared JOIN

To používá roztomilý matematický trik, který pomáhá s tímto problémem. Problém duplikátů prozatím ignorujte. Průměrný časový rozdíl mezi po sobě jdoucími řádky je rozdíl mezi prvním a posledním časovým razítkem dělený počtem řádků -1.

Důkaz:Průměrná vzdálenost mezi po sobě jdoucími řadami je součet vzdálenosti mezi po sobě jdoucími řadami dělený počtem po sobě jdoucích řádků. Ale součet rozdílu mezi po sobě jdoucími řádky je pouze vzdálenost mezi prvním řádkem a posledním řádkem (za předpokladu, že jsou seřazeny podle časového razítka). A počet po sobě jdoucích řádků je celkový počet řádků -1.

Pak už jen upravíme časová razítka tak, aby byla odlišná.



  1. Jaký je rozdíl mezi addlashes PHP a mysql(i)_escape_string?

  2. Automatické převzetí služeb při selhání databáze Moodle PostgreSQL

  3. mysql:proč porovnávání „řetězce“ s 0 dává pravdu?

  4. Oracle SQL PIVOT Table