-- 1 -- Nie uwzględniam sytuacji, gdy nie było żadnych zabiegów CREATE VIEW Maksy AS SELECT lekarz, COUNT(*) AS ile FROM Zabiegi GROUP BY lekarz; SELECT imie, nazwisko, ile FROM Maksy JOIN Lekarze ON numer = lekarz WHERE ile >= ALL (SELECT ile FROM Maksy); -- 2 CREATE VIEW Koszty AS SELECT pacjent, sum(koszt) AS koszta FROM Zabiegi WHERE krytyczny = 'nie' GROUP BY pacjent; SELECT imie, nazwisko FROM Koszty JOIN Pacjenci ON pacjent = pesel WHERE koszta > limit1; -- 3 CREATE VIEW Sasiadki AS SELECT lekarz, data, (SELECT MIN(data) FROM Zabiegi WHERE data > z1.data AND lekarz = z1.lekarz) AS nastepna FROM Zabiegi z1; CREATE VIEW Maksy AS SELECT lekarz, MAX(nastepna - data) maks FROM Sasiadki WHERE nastepna IS NOT NULL GROUP BY lekarz; SELECT imie, nazwisko, maks FROM Maksy JOIN Lekarze ON numer = lekarz WHERE maks >= ALL (SELECT maks FROM maksy); --4 CREATE VIEW NFZ AS SELECT miasto, SUM(koszt) k FROM Zabiegi JOIN Lekarze ON lekarz = numer GROUP BY miasto; SELECT miasto FROM NFZ WHERE k <= ALL (SELECT k FROM NFZ); -- Żeby mieć wyjątkowych skąpców CREATE VIEW NFZ1 AS SELECT miasto, SUM(koszt) k FROM Lekarze LEFT JOIN Zabiegi ON lekarz = numer GROUP BY miasto; SELECT miasto FROM NFZ1 WHERE COALESCE(k,0) <= ALL (SELECT COALESCE(k,0) FROM NFZ1); --5 SELECT miasto FROM Lekarze LEFT JOIN Zabiegi ON numer = lekarz GROUP BY miasto HAVING COUNT(pacjent) = 0;