Autor Zpráva
Giga
Profil
Mám dotaz ohledně možností MySQL.

Mám poměrně rozsáhlou databázi, přesněji tabulku o počasí, která obsahuje položky o měření - datum, čas, teplota, vlhkost ....
Záznamy jsou za několik let a jsou to měření za každou hodinu. Je to indexované podle data a času.
A já bych chtěl vědet v jakém nejdelšim časovém intervale teplota nevystoupila nad nulu.
Lze to uskutečnit jedním dotazem?

Ďekuji.
Keeehi
Profil
www.sqlservercentral.com/articles/T-SQL/71550
TomášK.
Profil *
Keeehi:
Odkazovaný návod mi přijde zbytečně složitý. Pro zdejší dotaz stačí (myslím) vyfiltrovat teploty nad nulou, a pak pomocí LAG() spočítat délku úseku mezi každou dvojicí řádků a vzít maximum. A moje řešení stejně jako odkazované má problém - MySQL neumí window funkce, snad v příští verzi.

V MySQL to možná půjde nějak obejít proměnnou a zřejmě jednodušší a spolehlivější bude udělat si na to proceduru/funkci a projít tu tabulku kurzorem.
Kajman
Profil
Pokud by to bylo na novější mariadb, kterážto umí window funkce, tak bych zkusil něco jako

with hranice as (
radek pod nebo roven nule, takovy, ze predesly radek je nad nulou nebo neexistuje + priznak start
union all
radek pod nebo roven nule, takovy, ze nasledujici radek je nad nulou nebo neexistuje + priznak stop
)
select datum_nasledujiciho_radku_stop-datum delka, datum from hranice where priznak='start' order by 1 desc limit 1

Pokud je to nutné na starších mysql, tak asi ta vlastní funkce a pokud to je úplně stará mysql, která ani uživatelské funkce nemá, tak asi zkusit použít uživatelské proměnné. Něco jako

prochazet zaznamy dle casu a pocitat aktualni serii mrazu a vypsat (omezit pres having) az kdyz je teplota nad nulou a aktualni serie je vetsi nez dosavadni nejdelsi serie

Z toho by to pak měl být poslední řádek.
Giga
Profil
Děkuji za reakce,
vidím to na "ruční" práci :)

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: