Autor Zpráva
Novosad1351
Profil *
Tento script používám na výpis dat min, max a avg za každý den:
SELECT time, MIN(data), MAX(data), AVG(data) FROM skolnik GROUP BY DATE(timestamp)

Jak ale vypíši data každých 30 minut?
timestamp je tvaru 2021-12-06 21:50:00 (datetime [1970-01-01 00:00:01])

Strašně moc, moc děkuji za výpomoc.
N71
Profil *
Obecně je třeba v GROUP BY klauzuli dostávat shodný výsledek výrazu pro každou skupinu. Napadá mě něco ve smyslu DATE_FORMAT(`timestamp`, '%i') DIV 30.

To je ale z hlediska výkonu problematické (výraz se počítá pro každý řádek). Pokud by bylo třeba tento select dělat častěji, vyplatí se hodnotu předpočítat a uložit do indexovaného sloupce.


Teda možná spíš UNIX_TIMESTAMP(`timestamp`) DIV 1800. Princip je stejný, dělíme beze zbytku čas v lineárním formátu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0