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;
../_images/sql2.png

Obr. 16 Dotaz na parcely typu Vodní tok z RÚIAN v QGIS

Pokud chceme např. vybrat parcely, které mají rozlohu větší než 10 ha, napíšeme

SELECT DruhPozemkuKod, VymeraParcely FROM parcely WHERE VymeraParcely > 100000;
../_images/sql3.png

Obr. 17 Dotaz na parcely větší než 10 ha z RÚIAN v QGIS

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';
../_images/sql4.png

Obr. 18 Dotaz na parcely se záznamem v roce 2021 z RÚIAN v QGIS

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;
../_images/sql5.png

Obr. 19 Dotaz na parcely typu Vodní tok se záznamem v roce 2021 z RÚIAN v QGIS seřazené dle výměry.

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;
../_images/sql7.png

Obr. 20 Maximální výměra v hektarech

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;
../_images/sql8.png

Obr. 21 Suma výměr v hektarech dle druhů pozemku

Na obrázku vidíme že např. Pole (druh č. 2) má v Dolní Lhotě celkem 221 hektarů.