Autor | Zpráva | ||
---|---|---|---|
Giga Profil |
#1 · Zasláno: 29. 1. 2023, 17:30:21
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 |
#3 · Zasláno: 29. 1. 2023, 20:21:13
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 |
#4 · Zasláno: 29. 1. 2023, 20:48:31
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 |
#6 · Zasláno: 30. 1. 2023, 14:37:52
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 |
||
Časová prodleva: 1 rok
|
0