Agregační funkce vypočítají jednu hodnotu ze sady řádků — COUNT, SUM, AVG, MIN, MAX. Jsou nezbytné pro shrnutí dat (součty, průměry, počty), zvláště v kombinaci s .
Agregační funkce vypočítají jednu hodnotu ze sady řádků — COUNT, SUM, AVG, MIN, MAX. Jsou nezbytné pro shrnutí dat (součty, průměry, počty), zvláště v kombinaci s .
GROUP BYSELECT
COUNT(*) AS total_rows, -- count all rows
COUNT(email) AS rows_with_email, -- count NON-NULL emails (ignores NULLs!)
SUM(amount) AS total_amount, -- sum of a column
AVG(price) AS average_price, -- average
MIN(price) AS lowest, -- minimum
MAX(price) AS highest -- maximum
FROM orders;
Každá funkce redukuje mnoho řádků na jednu hodnotu. SUM/AVG pracují s čísly; MIN/MAX s čísly, daty nebo textem; COUNT s čímkoliv.
COUNT(*) -- counts ALL rows (including those with NULLs)
COUNT(email) -- counts only rows where email is NOT NULL
COUNT(DISTINCT country) -- counts UNIQUE non-null values
COUNT(*) počítá všechny řádky, ale COUNT(sloupec) počítá pouze řádky, kde daný sloupec není NULL — jemný, ale důležitý rozdíl. COUNT(DISTINCT sloupec) počítá jedinečné hodnoty.
-- aggregate PER GROUP instead of the whole table
SELECT country, COUNT(*) AS users, AVG(age) AS avg_age
FROM users
GROUP BY country; -- one result row per country
-- → for each country: how many users and their average age
Bez GROUP BY agregace shrnuje celý výsledek do jednoho řádku. S GROUP BY vytváří jeden souhrnný řádek na skupinu — obvyklé, výkonné použití.
-- ❌ ERROR — can't mix an aggregate with a non-grouped column
SELECT name, COUNT(*) FROM users; -- which name? ambiguous
-- ✅ either group by it, or only select aggregates
SELECT country, COUNT(*) FROM users GROUP BY country;
Agregační funkce jsou nezbytné pro shrnutí a analýzu dat — výpočet součtů, průměrů, počtů a extrémů je neustálá potřeba v reportech, analytice, nástrojích pro vizualizaci a aplikační logice, takže jejich pochopení je základní znalostí SQL.
Znalost hlavních funkcí (COUNT, SUM, AVG, MIN, MAX) a způsobu, jak redukují sady řádků na jednu hodnotu, je nezbytná pro každé shrnutí dat.
Důležitý, často nepochopený detail je rozdíl COUNT(*) vs COUNT(sloupec) (COUNT(*) počítá všechny řádky, COUNT(sloupec) počítá pouze hodnoty, které nejsou NULL — což může dát různé, překvapivé výsledky), spolu s COUNT(DISTINCT) pro jedinečné hodnoty.
Nejmocněji se agregace kombinují s GROUP BY a vytváří souhrny na skupinu (počty/průměry na kategorii) — základ analytických dotazů.
Pochopení chyby, že nemůžete kombinovat agregace s neagregovanými sloupci (běžná chyba), je také důležité.
Protože shrnutí dat je všudypřítomný úkol v databázích (každý report, nástrojem pro vizualizaci a analytický dotaz používá agregace), a protože pochopení funkcí, subtilností COUNT a zejména jejich kombinace s GROUP BY je základem analýzy dat v SQL, zvládnutí agregačních funkcí je základní, často používaná znalost nezbytná pro práci s daty — spojuje základní dotazování a analytickou, sumarizační sílu, která dělá SQL cenným pro reportování a získávání poznatků.