Korzystamy z tabel stworzonych w Zadaniu 1 (i zmodyfikowanych w Zadaniu 2):
- Święta idą – wszystkie płace podstawowe rosną o 10%. Uaktualnij dane.
- Dokupiono nowy samochód (id 6, biała Toyota Yaris, DBC 1587). Wprowadź go do bazy i przypisz temu, kto zarabia najwięcej z osób nieposiadających jeszcze auta firmowego (podstawa plus premia).
- Stwórz widok, w którym zostanie wyświetlone podsumowanie firmy: imię i nazwisko pracownika, dział oraz stanowisko, pensja (podstawa plus premia) oraz czy posiada firmowy samochód (tak/nie) – screen:
[spoiler title=’Rozwiązanie’ style=’default’ collapse_link=’true’]
- UPDATE dzialy
SET placa_podstawowa = placa_podstawowa * 1.1;
- Wprowadzenie auta do bazy:
INSERT INTO Flota (id_auta, marka, model_auta, kolor, rejestracja, id_prac)
VALUES (6, 'Toyota’, 'Yaris’, 'bialy’, 'DBC 1587′, null);
Sprawdzenie, kto zarabia najwięcej:
SELECT pr.id_prac, pr.imie, pr.nazwisko, (dz.placa_podstawowa + pr.premia) AS zarobki
FROM pracownicy pr
INNER JOIN dzialy dz USING(id_dzialu)
WHERE pr.id_auta IS NULL
ORDER BY zarobki DESC
FETCH FIRST row only;
Przypisanie samochodu:
UPDATE Pracownicy
SET id_auta = 6 WHERE id_prac = 3;
UPDATE Flota
SET id_prac = 3 WHERE id_auta = 6;
W powyższym zapytaniu zamiast konkretnych wartości można podstawić podzapytania.
Zamiast id_prac (3) w pierwszym UPDATE można wstawić zmodyfikowaną wersję zapytania sprawdzającego kto najwięcej zarabia:
SELECT pr.id_prac
FROM pracownicy pr
INNER JOIN dzialy dz USING(id_dzialu)
WHERE pr.id_auta IS NULL
ORDER BY (dz.placa_podstawowa + pr.premia) DESC
FETCH FIRST row only;
A zamiast id_auta (6) w drugim można podstawić:
SELECT id_auta
FROM Flota
WHERE id_prac IS NULL;
- CREATE VIEW Podsumowanie AS
SELECT pr.imie ||’ '||pr.nazwisko as pracownik, dz.nazwa_dzialu, dz.stanowisko, (dz.placa_podstawowa + pr.premia) as zarobki,
CASE
WHEN pr.id_auta IS NULL THEN 'Nie’
ELSE 'Tak’
END AS Auto_firmowe
FROM Pracownicy pr inner join Dzialy dz
using (id_dzialu);
[/spoiler]