Funkcje agregujące na tabeli uczestnik w bazie danych SQLite.
--==============================================================================
-- Cwiczenie 04 - jezyk DQL - funkcje agregujace
--==============================================================================
-- *****************************************************************************
-- Przygotowanie danych do cwiczenia 4
DROP TABLE uczestnik;
CREATE TABLE uczestnik
( id int PRINMARY KEY, imie varchar(30), nazwisko varchar(30), rok char(4) ) ;
ALTER TABLE uczestnik ADD ocena int;
ALTER TABLE uczestnik ADD oplata numeric(10,2);
INSERT INTO uczestnik ( id, imie, nazwisko, rok, ocena, oplata ) VALUES
( 1, 'Adam', 'Abacki', '2001', 5, 100.00 ),
( 2, 'Bogdan', 'Babacki', '2001', 4, 120.00 ),
( 3, 'Marek', 'Cabacki', '2002', 4, 130.00 ),
( 4, 'Edward', 'Dadacki', '2002', 5, 100.00 ),
( 5, 'Zygmunt', 'Ebacki', '2002', 4, 100.00 ),
( 6, 'Anna', 'Mamacka', '2001', 4, 150.00 ),
( 7, 'Szymon', 'Zawacki', '2003', 5, 100.00 ),
( 8, 'Krystian', 'Nanacki', '2003', 4, 120.00 ),
( 9, 'Ewa', 'Cabacka', '2001', 5, 130.00 ),
(10, 'Andrzej', 'Tadacki', '2002', 5, 100.00 ),
(11, 'Zofia', 'Kowalska', '2002', 4, 140.00 ),
(12, 'Maria', 'Mamacka', '2003', 5, 150.00 );
INSERT INTO uczestnik ( id, nazwisko, rok ) VALUES (13, 'Sosnowski', '2001') ;
-- **********************************************************************************
-- Suma wniesionych oplat SUM()
SELECT SUM(oplata) AS oplata FROM uczestnik ;
-- Liczba wszystkich uczestnikow COUNT()
SELECT COUNT(*) AS liczba_uczestnikow FROM uczestnik ;
-- Srednia wartosc oplaty dla wszystkich uczestnikow AVG()
SELECT AVG(oplata) AS srednia_oplat FROM uczestnik ;
-- Wartosc maksymalna i minimalna oplaty za kurs
SELECT MIN(oplata) AS min_oplata, MAX(oplata) AS max_oplata FROM uczestnik ;
-- Liczba uczestnikow w poszczegolnych latach
SELECT rok, COUNT(*) FROM uczestnik GROUP BY rok;
-- Suma oplat w poszczegolnych latach
SELECT rok, SUM(oplata) AS oplata FROM uczestnik GROUP BY rok;
-- Lista kursow w poszczegolnych latach w ktorych liczba uczestnikow wieksza niz podana wartosc
SELECT rok, COUNT(*) FROM uczestnik GROUP BY rok HAVING COUNT(*) > 4;