Funkcje agregujące obliczają pojedynczą wartość ze zbioru wierszy — COUNT, SUM, AVG, MIN, . Są niezbędne do podsumowywania danych (sumy, średnie, liczby), zwłaszcza w połączeniu z .
Funkcje agregujące obliczają pojedynczą wartość ze zbioru wierszy — COUNT, SUM, AVG, MIN, . Są niezbędne do podsumowywania danych (sumy, średnie, liczby), zwłaszcza w połączeniu z .
MAXGROUP 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żda funkcja redukuje wiele wierszy do jednej wartości. SUM/AVG pracują na liczbach; MIN/MAX na liczbach, datach lub tekście; COUNT na czym kolwiek.
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(*) liczy wszystkie wiersze, ale COUNT(kolumna) liczy tylko wiersze, gdzie ta kolumna nie jest NULL — subtelna, ale ważna różnica. COUNT(DISTINCT kol) liczy unikalne wartości.
-- 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, agregat podsumowuje cały wynik w jeden wiersz. Z GROUP BY, produkuje jeden wiersz podsumowania na grupę — typowe, potężne zastosowanie.
-- ❌ 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;
Funkcje agregujące są niezbędne do podsumowywania i analizy danych — obliczanie sum, średnich, liczb i ekstremów to stała potrzeba w raportowaniu, analityce, dashboardach i logice aplikacji, dlatego zrozumienie ich jest fundamentalną wiedzą SQL.
Znajomość głównych funkcji (COUNT, SUM, AVG, MIN, MAX) i tego, jak redukują zbiory wierszy do pojedynczych wartości, jest niezbędna dla każdego podsumowania danych.
Ważnym, często źle zrozumianym szczegółem jest rozróżnienie COUNT(*) vs COUNT(kolumna) (COUNT(*) liczy wszystkie wiersze, COUNT(kolumna) liczy tylko wartości non-NULL — co może dać różne, zaskakujące wyniki), wraz z COUNT(DISTINCT) dla unikatowych wartości.
Najmocniej, agregaty łączą się z GROUP BY do produkcji podsumowań per grupę (liczby/średnie na kategorię) — fundament zapytań analitycznych.
Zrozumienie problemu że nie można mieszać agregatów z niezagregowanymi kolumnami (częsty błąd) jest również ważne.
Ponieważ podsumowywanie danych jest wszechobecnym zadaniem bazodanowym (każdy raport, dashboard i zapytanie analityczne używają agregatów), a zrozumienie funkcji, subtelności COUNT i zwłaszcza ich kombinacji z GROUP BY jest fundamentalne dla analizy danych w SQL, opanowanie funkcji agregujących to wiedza kluczowa, często stosowana, niezbędna do pracy z danymi — stanowiąca połączenie między podstawowym zapytaniami a analityczną, podsumowującą mocą, która czyni SQL wartościowym do raportowania i wglądów.