Ćwiczenia z SQL - Esport

Tworzenie zapytań do bazy danych

12. Znajdź gracza z największą liczbą wygranych

Zadanie: Wyświetl gracza, który wygrał najwięcej meczów.

Rozwiązanie
SELECT gracze.nazwa, COUNT(mecze.id) AS wygrane
FROM gracze
JOIN mecze ON gracze.id = mecze.id_gracza
WHERE mecze.wygrana = 1
GROUP BY gracze.nazwa
ORDER BY wygrane DESC
LIMIT 1;

13. Utwórz widok najlepszych graczy

Zadanie: Utwórz widok top_gracze wyświetlający graczy z co najmniej 10 wygranymi.

Rozwiązanie
CREATE VIEW top_gracze AS
SELECT gracze.nazwa, COUNT(mecze.id) AS wygrane
FROM gracze
JOIN mecze ON gracze.id = mecze.id_gracza
WHERE mecze.wygrana = 1
GROUP BY gracze.nazwa
HAVING wygrane >= 10;

14. Procedura resetująca punkty graczy

Zadanie: Napisz procedurę, która zresetuje punkty wszystkich graczy do zera.

Rozwiązanie
DELIMITER //
CREATE PROCEDURE reset_punkty()
BEGIN
    UPDATE gracze SET punkty = 0;
END //
DELIMITER ;

15. Wyzwalacz przy dodaniu nowego meczu

Zadanie: Napisz wyzwalacz, który przy dodaniu nowego meczu automatycznie zwiększy liczbę rozegranych meczów drużyny.

Rozwiązanie
CREATE TRIGGER aktualizuj_mecze
AFTER INSERT ON mecze
FOR EACH ROW
BEGIN
    UPDATE druzyny
    SET rozegrane_mecze = rozegrane_mecze + 1
    WHERE id = NEW.id_druzyny;
END;