Autor Zpráva
Giga
Profil
Pěkný den přeji.
Mám databázi o počasí za posledních 17 let.
Údaje po jednotlivých dnech obsahují i maximální teplotu za daný den.
Den, kdy teplota nevystoupí nad 0 je označován za ledový.
Rád bych vyhledal nejdelší souvislou řadu ledových dnů.
Dá se to i jinak, než sequenčním projetím tabulky?
Kajman
Profil
Pokud to není stará verze, co ještě neumí window funkce, tak to jde i dotazem.

Něco jako
SELECT   Min(g.datum)    od,
         Max(g.datum)    do,
         Count(*)     AS pocet
FROM     (
                  SELECT   d.datum,
                           Date_sub(d.datum, INTERVAL (Row_number() OVER(ORDER BY d.datum)) day) AS grp
                  FROM     teploty_denni d
                  WHERE    d.teplota_max<=0 ) g
GROUP BY g.grp
ORDER BY pocet DESC,
         od DESC 
Giga
Profil
Děkuji za reakci.
MySQL mám 5.5.62, zatím nevím jestli tam window funkce jsou.

a děkuji za doplnění příkladu.
Kajman
Profil
V té verzi nejsou a více než 4 roky už k ní nejsou ani bezpečnostní aktualizace.
Giga
Profil
Vybral jsem dotazem dny, kdy maximum bylo pod nulou a poté kontrolou návaznosti datumů spočetl
jednotlivé periody ledových dnů.
Nejdelší byla 32 dnů v lednu/únoru 2010 :)

Doma mám zmíněnou verzi 5.5.62 MySQL.
Na hostingu, kde mám stránky, provozují MariaDB 10
Kdybych chtěl upgradovat localhost, mám použít MySQL 8 nebo přejít na MariaDB?
Kajman
Profil
10.kolik? Od 10.2 by to mělo jít. Doma bych si dal mariadb 10.6 nebo stejnou, jak je na hostingu.
Kajman
Profil
Ono by to šlo i na staré verzi, když se do intervalu dá
SELECT Count(*)
FROM   teploty_denni p
WHERE  p.teplota_max <= 0
       AND p.datum < d.datum  
Ale bude to o několik řádů pomalejší.

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