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

MySQL:výběr dotazu, 5minutový přírůstek

Následující text vám poskytne ukázku skládající se z jakýchkoli dat s časovým razítkem v :00, :05, :10 ...

SELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
    AND mod(minute(time),5) = 0

Používám funkci modulo ke kontrole, zda je minutová část času (0 nebo) dělitelná 5.

Pokud potřebujete pouze jeden výsledek pro každý časový úsek, musíme být trochu složitější.

SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5), 
       min(temp_out), avg(temp_out), max(temp_out) 
FROM wmr200 
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5

Nemám teď přístup k instanci MySQL, abych to otestoval, ale tady je nápad. Seskupuje se každých pět minut, seskupuje se podle data, hodiny a round(minute(time)/5,0)*5 - která zaokrouhluje minuty na nejbližších 5.

Vybírá hodnotu času, kolem které by měla být seskupena, a minimální, prům a maximální temp_out, protože jsem si nebyl jistý, která z nich by nejlépe vyhovovala vaší situaci.

Pokud však vaše DB nemá data pro pětiminutový úsek (nebo 30minutový úsek, pokud to používáte), stále nemusí mít data pro vzorový bod.



  1. Načíst obrázek z databáze v asp.net

  2. MySQL zobrazuje výsledky v abecedním pořadí, ale zobrazuje konkrétní položku před abecedně seřazeným seznamem

  3. Maze ladění výkonu

  4. Chyba syntaxe tabulky Postgres