Funkcje agregujące w SQL

funkcje agregujace sql count sum avg

Funkcje agregujące w SQL – COUNT, SUM, AVG, MIN, MAX + praktyczne przykłady

Funkcja agregująca zwraca jedną wartość obliczoną z wielu wierszy, np. sumę, średnią albo liczbę wierszy. Chcesz policzyć liczbę pracowników, obliczyć średnią pensję, znaleźć najwyższe wynagrodzenie albo sprawdzić sumę wszystkich wynagrodzeń? Funkcje agregujące SQL pozwalają zamienić tysiące rekordów w konkretne informacje biznesowe.

Spis treści

  • Czym są funkcje agregujące?
  • COUNT()
  • SUM()
  • AVG()
  • MIN() i MAX()
  • GROUP BY
  • HAVING
  • COUNT(*) vs COUNT(kolumna)
  • NULL i agregacje
  • Najczęstsze błędy
  • JOIN i agregacje
  • Podsumowanie

Czym są funkcje agregujące w SQL?

Funkcja agregująca wykonuje obliczenie na wielu rekordach i zwraca jeden wynik.
Dzięki temu możemy szybko uzyskać odpowiedzi na pytania:

  • Ilu jest pracowników?
  • Jaka jest średnia pensja?
  • Jakie jest najwyższe wynagrodzenie?
  • Jaka jest suma sprzedaży?
SELECT COUNT(*)
FROM employees;

Najważniejsze funkcje agregujące

FunkcjaZnaczeniePrzykład
COUNT()Liczy rekordyLiczba pracowników
SUM()Sumuje wartościSuma wynagrodzeń
AVG()Oblicza średniąŚrednia pensja
MIN()Znajduje minimumNajniższa pensja
MAX()Znajduje maksimumNajwyższa pensja

COUNT() – liczenie rekordów

SELECT COUNT(*) AS liczba_pracownikow
FROM employees;
Wskazówka: COUNT(*) liczy wszystkie rekordy w tabeli.
SELECT COUNT(*) AS liczba_pracownikow
FROM employees
WHERE salary > 5000;

Klauzula WHERE filtruje dane przed wykonaniem agregacji.

SUM() – sumowanie wartości

SELECT SUM(salary) AS suma_wynagrodzen
FROM employees;
SELECT SUM(salary)
FROM employees
WHERE department_id = 50;

AVG() – średnia

SELECT AVG(salary) AS srednia_pensja
FROM employees;
Uwaga: AVG() ignoruje wartości NULL. NULL nie jest traktowany jako 0.

MIN() i MAX()

SELECT
    MIN(salary) AS najnizsza_pensja,
    MAX(salary) AS najwyzsza_pensja
FROM employees;

Możesz jednocześnie obliczać wiele statystyk:

SELECT
    COUNT(*) AS liczba_pracownikow,
    AVG(salary) AS srednia_pensja,
    MIN(salary) AS minimum,
    MAX(salary) AS maksimum,
    SUM(salary) AS suma_wynagrodzen
FROM employees;

GROUP BY – agregowanie danych

Jeżeli chcesz otrzymać wyniki dla poszczególnych działów, użyj GROUP BY:

SELECT
    department_id,
    COUNT(*) AS liczba_pracownikow
FROM employees
GROUP BY department_id;

Średnia pensja w każdym dziale:

SELECT
    department_id,
    AVG(salary) AS srednia_pensja
FROM employees
GROUP BY department_id;

HAVING – filtrowanie grup

WHERE filtruje rekordy, natomiast HAVING filtruje grupy utworzone przez GROUP BY.

SELECT
    department_id,
    COUNT(*) AS liczba_pracownikow
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Zapamiętaj:
WHERE → filtruje rekordy
GROUP BY → tworzy grupy
HAVING → filtruje grupy

COUNT(*) a COUNT(kolumna)

SELECT COUNT(*) 
FROM employees;
SELECT COUNT(commission_pct)
FROM employees;

COUNT(*) liczy wszystkie rekordy, natomiast COUNT(kolumna) pomija wartości NULL.

NULL a funkcje agregujące

Funkcje SUM(), AVG(), MIN() i MAX() ignorują wartości NULL.

1000
2000
NULL
3000

SUM() zwróci 6000, a AVG() obliczy średnią tylko na podstawie trzech wartości liczbowych.

Najczęstsze błędy

1. Brak GROUP BY

SELECT department_id, COUNT(*)
FROM employees;

2. Używanie WHERE zamiast HAVING

HAVING COUNT(*) > 5

3. Mylenie COUNT(*) z COUNT(kolumna)

Wyniki mogą być różne przez wartości NULL.

4. Traktowanie NULL jak zera

NULL oznacza brak wartości, a nie wartość zero.

JOIN i funkcje agregujące

SELECT
    d.department_name,
    COUNT(e.employee_id) AS liczba_pracownikow
FROM departments d
LEFT JOIN employees e
    ON d.department_id = e.department_id
GROUP BY d.department_name;

To bardzo częsty wzorzec spotykany w raportach biznesowych.

zobacz to na filmie:

Podsumowanie

  • COUNT() → liczba rekordów
  • SUM() → suma wartości
  • AVG() → średnia
  • MIN() → minimum
  • MAX() → maksimum

Opanowałeś podstawy funkcji agregujących? To dopiero początek. Na szkoleniu SQL Server dla początkujących przećwiczysz to i znacznie więcej na żywych przykładach, z trenerem, który odpowie na Twoje pytania.”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry