Title | Cw5 Goscik odp - Odpowiedzi do zapytań SQL |
---|---|
Course | Bazy danych |
Institution | Politechnika Bialostocka |
Pages | 15 |
File Size | 84.5 KB |
File Type | |
Total Downloads | 290 |
Total Views | 917 |
/* PODZAPYTANIA CD *//*Zad. 1 Wypisać Ŷazwiska oraz peŶsje tyĐh osóď, które Ŷie są kierowŶikaŵi ;Ŷie ŵają podwładnych).*/select nazwisko, pensja from pracownik where id_pracownika not in ( select id_kierownika from pracownik where id_kierownika is not null );/* st Zad. 2 Wypisać Ŷazwiska osóď zaraďi...
/* PODZAPYTANIA CD */
/* Zad. 1 Wypisać nazwiska oraz pensje tych osób, które nie są kierownikami (nie mają podwładnych).*/
select nazwisko, pensja from pracownik where id_pracownika not in ( select id_kierownika from pracownik where id_kierownika is not null );
/* st Zad. 2 Wypisać nazwiska osób zarabiających więcej niż co najmniej trzech pracowników, a każdy pracownik zarabiający mniej od danego realizował jakiś projekt. */
select id_pracownika, nazwisko from pracownik a where 3 = all ( select count(id_pracownika) from pracownik, poziom_zarobkow where pensja + nvl(premia, 0) between dolna_granica and gorna_granica and dolna_granica = ( select max(dolna_granica) from pracownik, poziom_zarobkow where pensja + nvl(premia, 0) between dolna_granica and gorna_granica ) group by nr_departamentu);
/* st Zad. 6
Wypisać średnie zarobki ludzi będących na tym samym stanowisku. Podać liczbę ludzi oraz stanowisko. Wypisywać tylko wtedy, gdy w obrębie jednej grupy znajduje się: a) co najmniej jeden pracownik i jego szef (są na tym samym stanowisku), b) dokładnie dwie takie pary.*/
SELECT AVG(pensja+nvl(premia,0)),COUNT(id_pracownika), stanowisko FROM Pracownik WHERE stanowisko in (SELECT p.stanowisko FROM Pracownik p,Pracownik k WHERE p.id_kierownika = k.id_pracownika AND p.stanowisko = k.stanowisko) group by stanowisko;
select count(id_pracownika), p.stanowisko, avg(pensja + nvl(premia,0)) from pracownik p group by p.stanowisko having (select count(id_pracownika) from pracownik pr where stanowisko = (select stanowisko from pracownik where id_pracownika = pr.id_kierownika) and stanowisko = p.stanowisko) = 2;
/* st Zad. 7 Wypisać nazwiska osób zarabiających najmniej w najmniej licznym departamencie.*/
select nazwisko from pracownik p where pensja + nvl(premia,0) = (select min(pensja + nvl(premia,0)) from pracownik where nr_departamentu = p.nr_departamentu) and p.nr_departamentu in (select nr_departamentu from pracownik group by nr_departamentu having count(id_pracownika)...