Funkcje agregujące w MySQL pozwalają na wykonywanie operacji na zbiorach danych, a nie tylko na pojedynczych rekordach. Umożliwiają podsumowanie, zestawienie lub policzenie wartości z grupy danych. Są kluczowe do tworzenia zapytań statystycznych, raportów oraz analiz danych. W tej lekcji omówimy najczęściej używane funkcje agregujące: COUNT()
, SUM()
, AVG()
, MIN()
i MAX()
.
Dane do importu:
CREATE TABLE Studenci (
ID INT PRIMARY KEY,
Imie VARCHAR(30),
Nazwisko VARCHAR(50),
RokStudiow INT
);
CREATE TABLE Kursy (
KodKursu VARCHAR(10) PRIMARY KEY,
NazwaKursu VARCHAR(100),
LiczbaGodzin INT
);
CREATE TABLE Zakupy (
ID INT PRIMARY KEY,
Produkt VARCHAR(100),
Cena DECIMAL(10, 2),
DataZakupu DATE
);
CREATE TABLE Pracownicy (
ID INT PRIMARY KEY,
Imie VARCHAR(30),
Nazwisko VARCHAR(50),
Funkcja VARCHAR(50),
DataZatrudnienia DATE
);
INSERT INTO Studenci (ID, Imie, Nazwisko, RokStudiow) VALUES
(1, 'Jan', 'Kowalski', 1),
(2, 'Anna', 'Nowak', 2),
(3, 'Piotr', 'Wiśniewski', 3),
(4, 'Maria', 'Zielińska', 4),
(5, 'Tomasz', 'Lewandowski', 2),
(6, 'Katarzyna', 'Kowalczyk', 1),
(7, 'Michał', 'Sikorski', 3),
(8, 'Ewa', 'Wójcik', 4),
(9, 'Paweł', 'Mazur', 2),
(10, 'Agata', 'Dąbrowska', 3);
INSERT INTO Kursy (KodKursu, NazwaKursu, LiczbaGodzin) VALUES
('CS101', 'Podstawy programowania', 30),
('CS102', 'Algorytmy i struktury danych', 40),
('CS103', 'Bazy danych', 35),
('CS104', 'Programowanie obiektowe', 45),
('CS105', 'Podstawy sieci komputerowych', 25),
('CS106', 'Systemy operacyjne', 50),
('CS107', 'Inżynieria oprogramowania', 40),
('CS108', 'Bezpieczeństwo komputerowe', 30),
('CS109', 'Programowanie współbieżne', 35),
('CS110', 'Zaawansowane techniki programowania', 45);
INSERT INTO Zakupy (ID, Produkt, Cena, DataZakupu) VALUES
(1, 'Laptop', 3000.00, '2024-01-15'),
(2, 'Monitor', 1200.50, '2024-09-15'),
(3, 'Mysz', 150.00, '2024-02-01'),
(4, 'Klawiatura', 200.00, '2024-03-01'),
(5, 'Smartphone', 2500.00, '2024-07-10'),
(6, 'Tablet', 1500.00, '2024-04-15'),
(7, 'Router', 350.00, '2024-05-05'),
(8, 'Drukarka', 600.00, '2024-06-25'),
(9, 'Głośniki', 250.00, '2024-08-05'),
(10, 'Kamera internetowa', 450.00, '2024-09-20');
INSERT INTO Pracownicy (ID, Imie, Nazwisko, Funkcja, DataZatrudnienia) VALUES
(1, 'Jan', 'Kowalski', 'Specjalista', '2022-01-10'),
(2, 'Anna', 'Nowak', 'Starszy Specjalista', '2024-02-10'),
(3, 'Piotr', 'Wiśniewski', 'Młodszy Specjalista', '2023-12-01'),
(4, 'Maria', 'Zielińska', 'Specjalista', '2021-05-15'),
(5, 'Tomasz', 'Lewandowski', 'Asystent', '2022-07-20'),
(6, 'Katarzyna', 'Kowalczyk', 'Kierownik', '2023-03-01'),
(7, 'Michał', 'Sikorski', 'Specjalista', '2023-11-11'),
(8, 'Ewa', 'Wójcik', 'Asystent', '2021-06-30'),
(9, 'Paweł', 'Mazur', 'Starszy Specjalista', '2024-01-15'),
(10, 'Agata', 'Dąbrowska', 'Dyrektor', '2020-09-25');
1. Funkcja COUNT()
Funkcja COUNT()
zlicza ilość wierszy w kolumnie lub całej tabeli, zależnie od jej użycia.
Składnia:
SELECT COUNT(kolumna) FROM tabela;
COUNT(kolumna)
– zlicza wszystkie niepuste wartości w wybranej kolumnie.COUNT(*)
– zlicza wszystkie wiersze w tabeli, w tym te zawierające wartości NULL.
Przykład:
SELECT COUNT(ID) FROM Pracownicy;
To zapytanie zwróci liczbę wszystkich pracowników w tabeli Pracownicy
.
Ćwiczenia z COUNT()
:
-
Zlicz liczbę wszystkich studentów w tabeli
Studenci
. -
Zlicz liczbę kursów, które mają więcej niż 30 godzin zajęć.
-
Zlicz liczbę produktów, które mają cenę powyżej 1000 w tabeli
Zakupy
. -
Zlicz liczbę pracowników zatrudnionych po 2023 roku.
2. Funkcja SUM()
Funkcja SUM()
sumuje wartości z wybranej kolumny.
Składnia:
SELECT SUM(kolumna) FROM tabela;
SUM(kolumna)
– dodaje wszystkie wartości liczbowe w kolumnie, pomijając wartości NULL.
Przykład:
SELECT SUM(Cena) FROM Zakupy;
To zapytanie obliczy całkowity koszt wszystkich zakupów.
Ćwiczenia z SUM()
:
-
Oblicz łączną liczbę godzin wszystkich kursów w tabeli
Kursy
. -
Oblicz całkowitą wartość zakupów w tabeli
Zakupy
. -
Oblicz łączną liczbę godzin kursów, które mają kod zaczynający się na 'CS'.
-
Oblicz całkowite wynagrodzenie wszystkich pracowników w tabeli
Pracownicy
.
3. Funkcja AVG()
Funkcja AVG()
oblicza średnią arytmetyczną wartości z wybranej kolumny.
Składnia:
SELECT AVG(kolumna) FROM tabela;
AVG(kolumna)
– oblicza średnią wartości liczbowych w kolumnie, pomijając wartości NULL.
Przykład:
SELECT AVG(LiczbaGodzin) FROM Kursy;
To zapytanie zwróci średnią liczbę godzin kursów.
Ćwiczenia z AVG()
:
-
Oblicz średnią cenę zakupów w tabeli
Zakupy
. -
Oblicz średnią liczbę godzin zajęć dla wszystkich kursów w tabeli
Kursy
. -
Oblicz średnią liczbę lat pracy wszystkich pracowników.
-
Oblicz średnią cenę produktów, które zostały zakupione po 2024-01-01.
4. Funkcja MIN()
i MAX()
Funkcje MIN()
i MAX()
zwracają odpowiednio najmniejszą i największą wartość w danej kolumnie.
Składnia:
SELECT MIN(kolumna) FROM tabela;
SELECT MAX(kolumna) FROM tabela;
MIN(kolumna)
– zwraca najmniejszą wartość w kolumnie.MAX(kolumna)
– zwraca największą wartość w kolumnie.
Przykład:
SELECT MIN(Cena) FROM Zakupy;
SELECT MAX(Cena) FROM Zakupy;
Te zapytania zwrócą najtańszy i najdroższy produkt w tabeli Zakupy
.
Ćwiczenia z MIN()
i MAX()
:
- Znajdź najniższą liczbę godzin kursu w tabeli
Kursy
. - Znajdź najwyższą cenę zakupionego produktu w tabeli
Zakupy
. - Znajdź najstarszego pracownika na podstawie daty zatrudnienia.
- Znajdź najmłodszego studenta na podstawie roku studiów w tabeli
Studenci
.