Zadanie 1: Łączenie Tabel - INNER JOIN
Utwórz zapytanie SQL, które wyświetli dane studentów oraz dane o zakwaterowaniu, używając INNER JOIN.
SELECT s.ID, s.Nr_albumu, z.Rok_akad, w.Data_wpłaty
FROM tStudenci s
INNER JOIN tZakwaterowanie z ON s.ID = z.ID_studenta
INNER JOIN tWpłaty w ON s.ID = w.ID
WHERE w.Za_rok_akad = 2024
ORDER BY s.ID;
Zadanie 2: Łączenie Tabel - LEFT JOIN
Utwórz zapytanie SQL, które wyświetli wszystkich studentów, nawet jeśli nie zapłacili za zakwaterowanie, używając LEFT JOIN.
SELECT s.ID, s.Nr_albumu, z.Rok_akad, w.Data_wpłaty
FROM tStudenci s
LEFT JOIN tZakwaterowanie z ON s.ID = z.ID_studenta
LEFT JOIN tWpłaty w ON s.ID = w.ID
WHERE w.Za_rok_akad = 2024
ORDER BY s.ID;
Zadanie 3: Subzapytania - Zapłata większa niż średnia
Utwórz zapytanie SQL, które wyświetli studentów, którzy zapłacili więcej niż średnia wpłat w 2024 roku, korzystając z subzapytania.
SELECT ID, Nr_albumu
FROM tStudenci
WHERE ID IN (
SELECT ID
FROM tWpłaty
WHERE Za_rok_akad = 2024
GROUP BY ID
HAVING SUM(Wpłata) > (
SELECT AVG(Wpłata)
FROM tWpłaty
WHERE Za_rok_akad = 2024
)
);
Zadanie 4: Funkcje Agregujące - Liczenie liczby studentów
Utwórz zapytanie SQL, które policzy liczbę studentów, którzy zapłacili mniej niż 1000 zł w 2024 roku.
SELECT COUNT(DISTINCT ID) AS Liczba_studentow
FROM tWpłaty
WHERE Za_rok_akad = 2024
GROUP BY ID
HAVING SUM(Wpłata) < 1000;
Zadanie 5: Procedura Składowana - Obliczanie całkowitej kwoty wpłat
Utwórz procedurę składowaną, która obliczy całkowitą kwotę wpłat dla danego studenta w danym roku akademickim.
DELIMITER //
CREATE PROCEDURE Oblicz_Wplaty(IN studentID INT, IN rok INT)
BEGIN
SELECT SUM(Wpłata) AS Całkowita_wplata
FROM tWpłaty
WHERE ID = studentID AND Za_rok_akad = rok;
END //
DELIMITER ;
Zadanie 6: Indeksowanie - Tworzenie Indeksu
Utwórz indeks na kolumnie 'ID' w tabeli tWpłaty, aby przyspieszyć zapytania na tej tabeli.
CREATE INDEX idx_id ON tWpłaty(ID);
Zadanie 7: Widoki - Tworzenie Widoku
Utwórz widok, który będzie zawierał sumę wpłat dla każdego studenta w 2024 roku.
CREATE VIEW v_Wplaty AS
SELECT ID, SUM(Wpłata) AS Całkowita_wplata
FROM tWpłaty
WHERE Za_rok_akad = 2024
GROUP BY ID;