Bazy danych - Politechnika Białostocka
Transkrypt
Bazy danych - Politechnika Białostocka
Małgorzata Krętowska Politechnika Białostocka Wydział Informatyki Bazy danych Pracownia specjalistyczna nr 8 Podzapytania z EXISTS Zadania 1. Wybrać nazwiska osób pod warunkiem, że istnieją też inne osoby zarabiające tyle, co dana osoba. 2. Wypisać nazwiska oraz pensje tych osób, które nie mają podwładnych. 3. Wypisać te poziomy zarobków, w skład których wchodzą pensje co najmniej 2 osób, przy założeniu, że przynajmniej jedna z tych osób pracowała nad dwoma projektami. 4. Wypisać nazwy projektów, nazwiska ludzi, którzy nad nim pracowali, pod warunkiem, że każdy pracownik nad nim pracujący jest na innym stanowisku. 5. Wypisać nazwy departamentów, w których pracuje najwięcej ludzi i pracuje co najmniej jeden pracownik, który był zatrudniony przy realizacji dokładnie jednego projektu. Podać nazwiska tych pracowników. 6. Wypisać nazwy departamentów, w których pracuje najwięcej Sprzedawców. Wypisać nazwę departamentu, minimalną, maksymalną i średnią pensję w tych departamentach. 7. Wypisać nazwiska pracowników i ich kierowników (jeśli takowych posiadają), pod warunkiem, że podwładny pracował przy realizacji najwcześniejszego projektu, pracował najwięcej godzin przy najwcześniejszym projekcie a jego kierownik nie pracował przy żadnym projektem. 8. Znaleźć nazwę departamentu, w którym pracuje najwięcej ludzi a wśród tych ludzi jest człowiek zarabiający najwięcej w całej firmie. 9. Wypisać nazwiska osób zarabiających więcej niż co najmniej jeden kierownik. 10. Dla każdego departamentu (nazwa) wypisać stanowiska najliczniej obsadzone. 11. Wypisać nazwę departamentu, średnią pensję podwładnych, średnią pensję kierowników (pracujących w tym departamencie), pod warunkiem, że w departamencie tym pracuje najwięcej podwładnych. 12. Wypisać nazwiska kierowników oraz nazwy departamentów, w których pracują, pod warunkiem, że dany kierownik ma najwięcej podwładnych, którzy kiedykolwiek pracowali (lub pracują) przy realizacji jakiegoś projektu. Przykład: kierownik A ma 20 podwładnych, z których 5 pracowało nad projektem, kierownik B ma 6 podwładnych, z których każdy pracował przy realizacji projektu. Powinno zostać wypisane nazwisko B. 13. Wypisać daty zatrudnienia oraz pensje ludzi, którzy pracowali (lub pracują) przy realizacji ostatniego projektu, pod warunkiem, że zatrudnieni są w najmniej licznym departamencie. 14. Wypisać nazwę oraz lokalizację departamentu, w którym pracuje najwięcej kierowników. 15. Wypisać nazwiska, pensje i stanowisko ludzi, których zarobki są unikatowe (nie ma drugiej osoby zarabiającej tyle samo) a stanowisko jest takim, na którym średnia pensja nie jest najwyższą średnią. 16. Wypisać nazwę projektu, nad którym pracowało najwięcej ludzi oraz nazwiska tych ludzi, pod warunkiem, że spędzili oni najwięcej (najmniej) godzin nad realizacją projektu a ich pensja jest niższa od średniej pensji w firmie. Pomoc EXISTS SELECT … FROM …. WHERE EXISTS (SELECT ....) • EXISTS (podzapytanie) - zwraca „true” jeżeli podzapytanie zwróci przynajmniej jeden wiersz • NOT EXISTS(podzapytanie) zwraca „true” jeżeli podzapytanie nie zwróci żadnego wiersza Przykład: Wypisać pracowników, którzy posiadają podwładnych SELECT nazwisko FROM pracownik a WHERE EXISTS (SELECT 1 FROM pracownik WHERE pracownik.id_kierownika=a.id_pracownika);