Lekcja 9: Funkcje agregujące (Część 1) - COUNT, SUM, AVG

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Lekcja 9: Funkcje agregujące (Część 1) - COUNT, SUM, AVG
Required In Progress

Czym są funkcje agregujące?

Funkcje agregujące wykonują obliczenia na zbiorze wierszy (grupie) i zwracają pojedynczą wartość zamiast listy wierszy — np. „Jaka jest średnia cena?” albo „Ilu jest uczniów?”. Działają inaczej niż pojedyncze operacje SELECT/WHERE/ORDER BY, bo „zwijają” wiersze do jednej odpowiedzi.

COUNT() — zliczanie wierszy (lub nie-nullowych wartości)

COUNT() służy do zliczania i występuje w kilku wariantach:

  • COUNT(*) — zlicza wszystkie fizyczne wiersze w grupie (lub w całej tabeli, jeśli nie ma GROUP BY). NULL nie ma znaczenia.
  • COUNT(kolumna) — zlicza tylko nie‑nullowe wartości w podanej kolumnie.
  • COUNT(DISTINCT kolumna) — zlicza unikalne, nie‑nullowe wartości w kolumnie.
-- Przykłady:
SELECT COUNT(*)            AS LiczbaUczniow FROM Uczniowie;
SELECT COUNT(Email)       AS LiczbaZEmail FROM Uczniowie;
SELECT COUNT(DISTINCT Miasto) AS LiczbaMiast FROM Uczniowie;

Różnica między COUNT(*) a COUNT(kolumna) wynika z obecności wartości NULL w kolumnie.

SUM() — sumowanie wartości

SUM() oblicza sumę wszystkich nie‑nullowych wartości numerycznych w kolumnie. Wartości NULL są ignorowane.

-- Przykład:
SELECT SUM(Wyplata) AS SumaWyplat FROM Pracownicy;

Można stosować WHERE, by sumować tylko część wierszy:

SELECT SUM(Wyplata) AS SumaIT
FROM Pracownicy
WHERE Dzial = 'IT';

 

AVG() — średnia arytmetyczna

AVG() oblicza średnią arytmetyczną wszystkich nie‑nullowych wartości numerycznych w kolumnie; wartości NULL są ignorowane.

-- Przykład:
SELECT AVG(Srednia) AS SredniaSzkolna FROM Uczniowie;

Ważna uwaga: AVG(kolumna) jest matematycznie równoważne SUM(kolumna) / COUNT(kolumna), a nie SUM(kolumna) / COUNT(*). To znaczy, że zarówno suma, jak i liczba elementów ignorują wartości NULL.

Dodatkowe wyjaśnienie dotyczące zachowania NULL w zapytaniach znajduje się w materiałach o pracy z wartościami NULL.

Przykłady użycia (z GROUP BY)

Funkcje agregujące często używa się razem z GROUP BY, aby obliczyć wartości dla podgrup danych (np. średnia w każdej klasie). Reguła: w SELECT przy GROUP BY można umieszczać tylko kolumny z GROUP BY lub funkcje agregujące.

-- Liczba uczniów w całej tabeli:
SELECT COUNT(*) AS LiczbaUczniow FROM Uczniowie;

-- Liczba uczniów mających email:
SELECT COUNT(Email) AS LiczbaZEmail FROM Uczniowie;

-- Liczba unikalnych miast:
SELECT COUNT(DISTINCT Miasto) AS LiczbaMiast FROM Uczniowie;

-- Suma wypłat w dziale 'Sprzedaz':
SELECT SUM(Wyplata) AS SumaSprzedaz FROM Pracownicy WHERE Dzial = 'Sprzedaz';

-- Średnia ocen w całej szkole:
SELECT AVG(Srednia) AS SredniaSzkolna FROM Uczniowie;

-- Średnia ocen w każdej klasie (GROUP BY):
SELECT Klasa, AVG(Srednia) AS SredniaWKlasie, COUNT(*) AS LiczbaUczniow
FROM Uczniowie
GROUP BY Klasa;

Materiały wykorzystane: Lekcja o funkcjach agregujących (COUNT, SUM, AVG) oraz przykłady z GROUP BY i obsługi NULL.