Autor | Zpráva | ||
---|---|---|---|
Giga Profil |
#1 · Zasláno: 26. 3. 2021, 14:18:01
Zdar pánové,
mám databázi o počasí Datum Tmax Tmin Tden Srážky Tlak Síla větru, Směr větru .... na jednom místě za posledních 17 let. Pro každý den jeden řádek. Teď bych chtěl zjistit pro každé datum v roku jaká byla v ten den nejvyšší/nejnižší teplota. Řeším to tak že uvedu v sql dotazu klauzuli where Month(Datum)=Měsíc(Dnes) and Day(datum)=Den(Dnes). Výsledky seřazené podle Tmax mi dají přehled o rozsahu denních maximálních teplot. Obdobně je to u Tmin. To znamená dva dotazy na databázi pro každé datum v roce. Lze to v MySQL nějakým způsobem racionalizovat? |
||
Kajman Profil |
#2 · Zasláno: 26. 3. 2021, 14:25:33
Něco jako
select min(Tmax) tmax_min, max(Tmax) tmax_max, min(Tmin) tmin_min, max(Tmin) tmin_max from tabulka where Month(Datum)=Měsíc(Dnes) and Day(datum)=Den(Dnes) Vrátí jeden řádek se čtyřmi sloupci. Pokud ten dotaz budete dělat často, zvažte dva nové sloupce, kde bude den a měsíc. Nad takovými sloupci by se pak dal udělat dvousloupcový index a dotaz bude rychlejší. |
||
Keeehi Profil |
Tohle ti udělá celoroční přehled.
SELECT day(datum) AS den, month(datum) AS mesic, min(Tmax) AS minimum, max(Tmin) AS maximum FROM tabulka GROUP BY day(datum), month(datum) |
||
Giga Profil |
#4 · Zasláno: 26. 3. 2021, 19:39:46
Děkuji za podnety :)
Nad celoročním přehledem se asi budu muset vážně zamyslet :) |
||
Giga Profil |
#5 · Zasláno: 27. 3. 2021, 07:54:51
Kajmanova rada s extra sloupci pro den a měsíc dává smysl.
Keeehiův dotaz je super. (Jenom je potřeba změnit pořadí v GROUP BY. Jako první měsíc, pak den) Děkuji. |
||
Keeehi Profil |
#6 · Zasláno: 27. 3. 2021, 09:16:34
Giga:
Zrovna tady by nemělo na pořadí záležet jelikož jde o dvě na sobě nezávislé hodnoty. Jestli myslíš kvůli řazení výsledku, pak je to "taky jedno". Že je výsledek nějak seřazený po GROUP BY je jen vedlejší produkt. Ale není to zaručené, proto bys na to neměl spoléhat. Pokud chceš mít výsledky seřazené, měl bys ještě použít ORDER BY. A ano, tam už na pořadí záleží. |
||
Časová prodleva: 3 roky
|
0