SQL v kostce (2)
Dalším běžným databázovým úkolem je agregace – tedy zmenšení objemu dat tím, že je rozdělíš do skupin a každou skupinu shrneš.
V SQL se k tomu používá příkaz GROUP BY. Ten rozdělí data do skupin a na každou skupinu aplikuje funkci zadanou v příkazu SELECT.
Například, pokud bys chtěl/a zjistit počet letů z každého ze dvou výchozích letišť, použil/a bys dotaz:
SELECT COUNT(*) FROM flights
GROUP BY origin;
GROUP BY origin říká SQL, že výsledek má mít jeden řádek pro každou jedinečnou hodnotu sloupce origin. Příkaz SELECT určuje hodnoty, které se zobrazí v jednotlivých sloupcích. Tady chceme COUNT() spočítat všechny řádky v každé skupině.
Můžeš také seskupit podle více sloupců najednou. V takovém případě bude výsledná tabulka obsahovat řádek pro každou kombinaci jedinečných hodnot v těchto sloupcích. Následující dotaz spočítá počet letů z letišť SEA a PDX do každého cílového letiště:
SELECT origin, dest, COUNT(*) FROM flights
GROUP BY origin, dest;
Výsledek bude obsahovat řádek pro každou kombinaci hodnot sloupců origin a dest (tedy řádek pro každou dvojici výchozího a cílového letiště). Přibude také sloupec s hodnotou COUNT() pro všechny řádky v dané skupině.
Podrobnější přehled SQL najdeš zde.
Jaké informace vrátí tento dotaz? Připomeň si, že tabulka flights obsahuje údaje o letech odlétajících z letišť PDX a SEA v letech 2014 a 2015. Funkce AVG() vypočítá průměrnou hodnotu sloupce!
SELECT AVG(air_time) / 60 FROM flights
GROUP BY origin, carrier;
Toto cvičení je součástí kurzu
Foundations of PySpark
Interaktivní praktické cvičení
Proměňte teorii v praxi s jedním z našich interaktivních cvičení
Začít cvičení