Napisz procedurę składowaną do zwiększenia wynagrodzenia o 10% dla wszystkich pracowników.
CREATE PROCEDURE ZwieksszWynagrodzenie()
BEGIN;
UPDATE Pracownicy SET Wynagrodzenie = Wynagrodzenie * 1.10;
END;
Stwórz wyzwalacz zapisujący historię zmian wynagrodzenia do tabeli HistoriaWynagrodzen.
CREATE TRIGGER ZmianaWynagrodzenia
AFTER UPDATE ON Pracownicy
FOR EACH ROW
BEGIN;
INSERT INTO HistoriaWynagrodzen (ID_Pracownika, StareWynagrodzenie, NoweWynagrodzenie)
VALUES (OLD.ID, OLD.Wynagrodzenie, NEW.Wynagrodzenie);
END;
Pobierz dane pracowników wraz z nazwami ich działów z tabeli Dzialy.
SELECT Pracownicy.Imię, Pracownicy.Nazwisko, Dzialy.Nazwa
FROM Pracownicy
JOIN Dzialy ON Pracownicy.ID_Dzialu = Dzialy.ID;
Pokaż średnie wynagrodzenie w każdym dziale.
SELECT ID_Dzialu, AVG(Wynagrodzenie) AS SrednieWynagrodzenie
FROM Pracownicy
GROUP BY ID_Dzialu;
Wyświetl trzech najlepiej zarabiających pracowników.
SELECT * FROM Pracownicy
ORDER BY Wynagrodzenie DESC
LIMIT 3;
Utwórz tabelę HistoriaWynagrodzen do przechowywania zmian wynagrodzenia.
CREATE TABLE HistoriaWynagrodzen (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
ID_Pracownika INTEGER,
StareWynagrodzenie CURRENCY,
NoweWynagrodzenie CURRENCY,
DataZmiany TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Dodaj przykładowe wpisy do tabeli HistoriaWynagrodzen.
INSERT INTO HistoriaWynagrodzen (ID_Pracownika, StareWynagrodzenie, NoweWynagrodzenie)
VALUES (1, 5000, 5500), (2, 6000, 6600);
Połącz tabelę Pracownicy z tabelą Dzialy.
ALTER TABLE Pracownicy ADD COLUMN ID_Dzialu INTEGER;
ALTER TABLE Pracownicy ADD FOREIGN KEY (ID_Dzialu) REFERENCES Dzialy(ID);
Wyświetl wszystkich pracowników, którzy zarabiają więcej niż średnia pensja.
SELECT * FROM Pracownicy
WHERE Wynagrodzenie > (SELECT AVG(Wynagrodzenie) FROM Pracownicy);
Usuń klucz obcy łączący tabelę Pracownicy z tabelą Dzialy.
ALTER TABLE Pracownicy DROP COLUMN ID_Dzialu;