V této části se dozvíte, jak používat základní agregační funkce a jak lze záznamy rozdělovat do skupin a k čemu nám to je.

SQL3 - Seskupování a agregace

V této části se dozvíte, jak používat základní agregační funkce a jak lze záznamy rozdělovat do skupin a k čemu nám to je.

Agregační funkce

Agregační funkce umožňují spočítat agregovanou hodnotu pro celou množinu řádků. Lze tak například hledat maximální hodnotu, průměrnou hodnotu, celkový součet atd. Příkladem použití agregační funkce může být například.

SELECT
SUM(Revenue)
FROM
Sales

Tento dotaz vrátí celkové tržby získané sečtením Revenue všech řádků z tabulky Sales. Některé z agregačních funkcí lze použít na libovolný ordinální datový typ (např. MAX, MIN), jiné mohou být omezeny například jen na číselné hodnoty (např. SUM). V následujících odstavcích jsou rozebrány nejčastěji používané agregační funkce včetně jejich úskalí.

MAX a MIN

Tyto agregační funkce vrací maximální (resp. minimální) hodnotu daného výrazu pro celou množinu řádků. V případě řetězců tyto funkce vrací první resp. poslední hodnotu ze seznamu vzniklého abecedním seřazením všech hodnot. Pokud daná množina neobsahuje žádné řádky, vrací tyto funkce NULL.

SUM

Tato funkce počítá součet hodnot napříč řádky z dané množiny. Jejím parametrem může být libovolná číselná hodnota. Je však třeba dát pozor na situaci, kdy součet hodnot typu int přesáhne maximální rozsah typu int (cca 2 miliardy). V takovém případě je nutné před sčítáním hodnotu nejprve přetypovat na bigint pomocí funkce CAST nebo CONVERT.

AVG

Tato funkce počítá aritmetický průměr hodnot z dané množiny. Při používání této funkce je třeba si uvědomit, zda opravdu počítáte to, co chcete - viz příklad ve videu.

COUNT

Funkce COUNT bývá často zdrojem nepříjemných překvapení. Vrací počet hodnot v dané množině. Je však třeba mít na paměti, že pokud chcete spočítat počet jedinečných hodnot, je nutné použít klíčové slovo DISTINCT. Viz příklad ve videu.

GROUP BY

Tato část dotazu SELECT určuje, podle čeho se mají řádky vybrané z tabulky rozdělit do skupin. Zásadní výhodou je, že při použití seskupení se všechny agregační funkce počítají pro každou ze skupin samostatně. Lze tak snadno určit například součty tržeb pro jednotlivé státy nebo průměrné výdělky výrobců atd.

Naprosto zásadní je fakt, že při použití části GROUP BY lze v části SELECT používat jen sloupce, podle nichž se seskupuje. Ostatní sloupce lze použít pouze obalené v některé z agregačních funkcí. Je to logické, protože když například rozdělím faktury na skupiny podle států, tak následně nemůžu ze skupiny vybrat třeba datum prodeje, protože každá z faktur může mít toto datum jiné. Můžu však bez problémů vybrat nejvyšší nebo nejnižší datum. Obecně je dobře, když si při zápisu dotazu představíte situaci z reálného světa tak, jak je to ve videu.

Samostatná práce

V prezentaci SQL3 - Samostatná práce naleznete příklady na procvičení znalostí získaných v této části. Na každém snímku je vždy zadání a po posunutí se zobrazí odpověď. Než se na odpověď podíváte, zkuste nejdřív přijít na řešení samostatně.

Zaujal Tě tento online kurz?

Přihlásit k newsletteru

Projekt online vzdělávání byl realizován v rámci Stipendia Czechitas v projektu: „Ženy do IT“ (reg.č. CZ.03.1.51/0.0/0.0/16_061/0003268), který je financován z prostředků Evropského sociálního fondu prostřednictvím Operačního programu Zaměstnanost.