Atributy v SQL¶
V úvodu jsme si ukázali, že můžeme požádat o atributy z tabulky. Atributy však můžeme využít také k dotazování.
Podmínka¶
V jazyce SQL je možné tvořit podmínky. Slouží k tomu celá řada klíčových slov a operátorů, ale základní je slovo WHERE a matematické operátory jako je např. =.
Pokud tedy chceme vybrat např. parcely, typu Vodní tok, který má kód 7, tak podmínku zapíšeme takto
SELECT DruhPozemkuKod, VymeraParcely FROM parcely WHERE DruhPozemkuKod = 7;
Pokud chceme např. vybrat parcely, které mají rozlohu větší než 10 ha, napíšeme
SELECT DruhPozemkuKod, VymeraParcely FROM parcely WHERE VymeraParcely > 100000;
Specifickým způsobem se ohraničují hodnoty atributů typu text (řetězec) a datum. Tyto hodnoty se uvozují jednoduchými uvozovkami.
Pokud tedy chceme získat záznamy, které platí od roku 2021, tedy v roce 2021 došlo na parcele ke změně nebo nově vznikla, ptáme se takto.
SELECT PlatiOd, DruhPozemkuKod, VymeraParcely FROM parcely WHERE PlatiOd > '2020-12-31';
Další užitečná klíčová slova a výrazy¶
Mezi často používaná klíčová slova patří ORDER BY, AND, OR, NOT a ().
Pomocí ORDER BY můžeme záznamy řadit dle vybraného atributu, atributů nebo výrazu.
Pomocí operátorů AND, OR, NOT a () můžeme sestavovat logické kombinace podmínek.
Pokud nás tedy třeba zajímají parcely, které mají změnu v roce 2021 a jsou to Vodní toky, můžeme je vybrat takto a seřadit podle výměry.
SELECT PlatiOd, DruhPozemkuKod, VymeraParcely FROM parcely
WHERE PlatiOd > '2020-12-31' AND DruhPozemkuKod = 7
ORDER BY VymeraParcely;
Výrazy můžeme zapisovat na různá místa v dotazu a můžeme používat i celou řadu funkcí. Jako příklad uvedeme jeden výraz a funkci MAX, která nám vypíše maximální výměru v území v hektarech.
SELECT MAX(VymeraParcely) / 10000 FROM parcely;
Funkce součtu a agregace¶
Častou operací je agregace dat. V našem příkladu můžeme pomocí agregace např. získat celkovou plochu všech pozemků daného typu.
Funkce pro součet se označuje SUM. Klíčové slovo pro agregaci se označuje GROUP BY.
SELECT DruhPozemkuKod, SUM(VymeraParcely) / 10000 FROM parcely GROUP BY DruhPozemkuKod;
Na obrázku vidíme že např. Pole (druh č. 2) má v Dolní Lhotě celkem 221 hektarů.