110 likes | 197 Views
Agregace. Distinct , Group By, Having , SUM, …. Distinct. Slučování stejných řádků ve výsledku dotazu. SELECT DISTINCT jméno FROM lidé. LIMIT (TOP). Omezení počtu řádků ve výsledku. SELECT nazev FROM obce ORDER BY obyvatele LIMIT 10. Jen deset řádků.
E N D
Agregace Distinct, Group By, Having, SUM, …
Distinct Agregace • Slučování stejných řádků ve výsledku dotazu. SELECT DISTINCT jméno FROM lidé
LIMIT (TOP) Agregace • Omezení počtu řádků ve výsledku SELECT nazev FROM obce ORDER BY obyvatele LIMIT 10 Jen deset řádků SELECT nazev FROM obce ORDER BY obyvatele LIMIT 10 OFFSET 20 Jen deset řádků, začínáme od dvacátého
Agregace GROUP BY, HAVING Seskupování dat
GROUP BY Agregace • Umožňuje získávat souhrnné výsledky dat podle nějakých kritérií. • Říká: vezmi výsledky SELECTu, dej je dohromady podle těchto sloupečků a pak získej následující informace. • Nemá smysl použít GROUP BY bez agregačních funkcí v seznamu sloupců. • Na vypočítávané sloupce nelze použít WHERE.
Agregační funkce Agregace • COUNT(sloupec) - počet neprázdných řádků v daném sloupci, lze použít (*) • SUM(sloupec) - součet všech hodnot ve sloupci • AVG(sloupec) - průměr hodnot ve sloupci • MAX(sloupec) – největší hodnota ve sloupci • MIN(sloupec) – nejmenší hodnota ve sloupci
Příklad: Počet lidí se jménem Agregace SELECT Jméno, COUNT(Jméno) FROM Lidé GROUP BY Jméno
AS Agregace • Sloupce s agregacemi se špatně zpracovávají • Je vhodné je přejmenovat pomocí AS SELECT Jméno, COUNT(Jméno) AS Počet FROM Lidé GROUP BY Jméno
Having Agregace • Restrikce na sloupce s vypočítávanou (agregovanou) hodnotou SELECT Jméno, COUNT(Jméno) AS Počet FROM Lidé GROUP BY Jméno HAVING Počet > 1
Pořadí částí SELECT Agregace • SELECT • FROM (JOIN) • WHERE • GROUP BY • HAVING • ORDER BY • (LIMIT)
Vyhodnocení SELECTU Agregace • Sestaví se všechny řádky a všechny sloupce na všech tabulkách (kartézský součin) • Omezí se sloupce • Omezí se řádky WHERE • Provede se GROUP BY • Vypočítají se agregované sloupce • Omezí se přes HAVING • Řádky se seřadí pomocí ORDER BY