Funkcje agregujące pozwalają wykonywać operacje na zbiorach danych, a nie tylko na pojedynczych rekordach. Dzięki nim możemy:
- podsumowywać dane,
- liczyć rekordy,
- obliczać wartości średnie,
- znajdować minimum i maksimum.
Są one niezbędne do budowy raportów, analiz i zapytań statystycznych. W tej lekcji omówimy pięć najczęściej używanych funkcji:
COUNT()SUM()AVG()MIN()MAX()
Dane do cwiczen
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
);
Przykladowe dane
INSERT INTO Studenci (ID, Imie, Nazwisko, RokStudiow) VALUES
(1, 'Jan', 'Kowalski', 1),
(2, 'Anna', 'Nowak', 2),
(3, 'Piotr', 'Wisniewski', 3),
(4, 'Maria', 'Zielinska', 4),
(5, 'Tomasz', 'Lewandowski', 2),
(6, 'Katarzyna', 'Kowalczyk', 1),
(7, 'Michal', 'Sikorski', 3),
(8, 'Ewa', 'Wojcik', 4),
(9, 'Pawel', 'Mazur', 2),
(10, 'Agata', 'Dabrowska', 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', 'Inzynieria oprogramowania', 40),
('CS108', 'Bezpieczenstwo komputerowe', 30),
('CS109', 'Programowanie wspolbiezne', 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, 'Glosniki', 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', 'Wisniewski', 'Mlodszy Specjalista', '2023-12-01'),
(4, 'Maria', 'Zielinska', 'Specjalista', '2021-05-15'),
(5, 'Tomasz', 'Lewandowski', 'Asystent', '2022-07-20'),
(6, 'Katarzyna', 'Kowalczyk', 'Kierownik', '2023-03-01'),
(7, 'Michal', 'Sikorski', 'Specjalista', '2023-11-11'),
(8, 'Ewa', 'Wojcik', 'Asystent', '2021-06-30'),
(9, 'Pawel', 'Mazur', 'Starszy Specjalista', '2024-01-15'),
(10, 'Agata', 'Dabrowska', 'Dyrektor', '2020-09-25');
1. Funkcja COUNT()
Funkcja COUNT() zlicza rekordy w tabeli.
Składnia:
SELECT COUNT(kolumna) FROM tabela;
COUNT(kolumna)– liczy tylko wartości niepuste (NOT NULL).COUNT(*)– liczy wszystkie rekordy w tabeli.
Przykład:
SELECT COUNT(ID) FROM Pracownicy;
To zapytanie zwróci liczbę pracowników.
Ćwiczenia z COUNT()
- Zlicz wszystkich studentów w tabeli Studenci.
- Zlicz kursy, które mają więcej niż 30 godzin.
- Zlicz produkty droższe niż 1000 zł w tabeli Zakupy.
- Zlicz pracowników zatrudnionych po 2023 roku.
2. Funkcja SUM()
Funkcja SUM() sumuje wartości liczbowe w kolumnie.
Składnia:
SELECT SUM(kolumna) FROM tabela;
Przykład:
SELECT SUM(Cena) FROM Zakupy;
To zapytanie poda łączną wartość wszystkich zakupów.
Ćwiczenia z SUM()
- Oblicz łączną liczbę godzin kursów.
- Oblicz całkowitą wartość zakupów.
- Oblicz sumę godzin kursów, których kod zaczyna się na
CS.
3. Funkcja AVG()
Funkcja AVG() oblicza średnią arytmetyczną.
Składnia:
SELECT AVG(kolumna) FROM tabela;
Przykład:
SELECT AVG(LiczbaGodzin) FROM Kursy;
To zapytanie zwróci średnią liczbę godzin kursów.
Ćwiczenia z AVG()
- Oblicz średnią cenę zakupów.
- Oblicz średnią liczbę godzin kursów.
- (trudne, dla chetnych) Oblicz średnią liczbę lat pracy pracowników.
- Oblicz średnią cenę produktów kupionych po
2024-01-01.
4. Funkcje MIN() i MAX()
Funkcje MIN() i MAX() służą do wyszukiwania najmniejszych i największych wartości.
Składnia:
SELECT MIN(kolumna) FROM tabela;
SELECT MAX(kolumna) FROM tabela;
Przykłady:
SELECT MIN(Cena) FROM Zakupy;
SELECT MAX(Cena) FROM Zakupy;
To zapytania pokażą najtańszy i najdroższy produkt.
Ćwiczenia z MIN() i MAX()
- Znajdź najniższą liczbę godzin kursu.
- Znajdź najwyższą cenę zakupu.
- Znajdź najstarszego pracownika (po dacie zatrudnienia).
- Znajdź najmłodszego studenta (po roku studiów).