Sunteți pe pagina 1din 2

BAZE DE DATE – SEMINAR 7

___________________________________________________________________________

Exercitii:
1. Sa se selecteze din tabela angajaţi numai angajatii care au salariul cuprins intre 8000 si
10000.
Select * from angajati where salariul between 8000 and 10000;

2. Sa se selecteze din tabela angajatinumai angajatii care au functiaSA_REP.


Select * from angajati where id_functie = 'SA_REP';

3. Sa se selecteze angajatii care sunt in acelasi departament cu angajatul Smith.


SELECT * FROM angajati WHERE id_departament IN
(SELECT id_departament FROM angajati WHERE upper(nume)= 'SMITH');

4. Să se afişeze produsele care au preţul unitar cel mai mic:


SELECT p.denumire_produs, rc.pret FROM produse p, rand_comenzi rc
WHERE p.id_produs = rc.id_produs
AND rc.pret=(SELECT MIN(rand_comenzi.pret) FROM rand_comenzi);

5. Modificati conditia de sus astfel incat sa fie selectati si cei care au in denumirea
functiei atributul ACCOUNT.
Select * from angajati where id_functie = 'SA_REP' OR id_functie LIKE
'%ACCOUNT%';

6. Sa se selecteze toti angajatii pentru care a doua litera din e-mail este A, B sau C.
Select * from angajati where email like '_A%' or email like '_B%' or email like '_C%';

7. Sa se selecteze toti angajatii care au numarul de telefon format din al doilea grup de
cifre din 123 (de exemplu: 515.123.4569)
Select * from angajati where telefon like '%.123.%';

8. Sa se selecteze toti angajatii angajati inainte de 1ianuarie 2000 (data_angajare).


Select * from angajati where data_angajare<to_date('01.01.2000', 'DD.MM.YYYY');

9. Modificati conditia de mai sus astfel incat sa afisati numai salariatii angajati in
ianuarie 2000.
Select * from angajati where extract(year from data_angajare) = 2000;

10. Sa se selecteze numele, salariul,functia angajatilor şi denumirea departamentului


pentru cei care lucreaza în departamentul IT.
Select a.nume, a.salariul, a.id_functie, d.denumire_departament from angajati a,
departamente d
wherea.id_departament = d.id_departament and denumire_departament like '%IT%';

11. Modificati conditia de mai sus astfel incat sa fie selectati toti angajatii din
departamentele care au in denumire specificatia IT, indifferent daca acestea au sau nu
angajati.
Select a.nume, a.salariul, a.id_functie, d.denumire_departament
fromangajati a, departamente d where a.id_departament(+) = d.id_departament
anddenumire_departament like '%IT%';

1
BAZE DE DATE – SEMINAR 7
___________________________________________________________________________

12. Sa se selecteze numele, salariul,departamentul si denumirea functiei angajatiilor care


au functia de Programmer (denumire_functie din functii).
Select a.nume, a.salariul, a.id_functie, f.denumire_functiefrom angajati a, functii f
where a.id_functie=f.id_functieand denumire_functie like '%Programmer%';

13. Modificati conditia de mai sus astfel incat sa afisati toti angajatii cu functii de
Manager (de exemplu Finance Manager sau Purchasing Manager etc).
Select a.nume, a.salariul, a.id_functie, f.denumire_functiefrom angajati a, functii f
wherea.id_functie=f.id_functieand denumire_functie like '%Programmer%';

14. Sa se selecteze numele, salariul, denumirea departamentului, denumirea functiei


angajatiilor din departamentul de vânzări (care contin in denumireSales) si care au
functia de Representative sau Manager.
Select a.nume, a.salariul, a.id_functie, d.denumire_departament, f.denumire_functie
From angajati a, departamente d, functii f where a.id_departament= d.id_departament
anda.id_functie=f.id_functie and d.denumire_departament like '%Sales%' and
(f.denumire_functie like '%Representative%' or f.denumire_functie like
'%Manager%');

15. Afisati numele si in ordine crescatoare salariile si in ordine descrescatoare data


angajarii pentru salariatii din departamentul vânzări (Sales).
Select a.nume, a.prenume, a.salariul, a.data_angajare, d.denumire_departament
fromangajati a, departamente d where a.id_departament=d.id_departament
and d.denumire_departament like '%Sales%' order by salariul, data_angajare desc;

16. Sa se selecteze numele, functia, comisionul si departamentul angajatilor care nu au


comisionul NULL.
Select nume, id_functie, comision, id_departament from angajati where comision is
not null;

17. Afisati numele, comisionul, functia, departamentul angajatilor din departamentul


Sales, precum si suma primita prin aplicarea comisionului la volumul vanzarilor
(venit) mai mare 90000Euro. Ordonati descrescator dupa acestă valoare folosind
aliasul.
Select a.nume, a.comision, a.id_functie, d.denumire_departament,
sum(rc.pret*rc.cantitate) from angajati a, departamente d, comenzi c, rand_comenzi rc
where a.id_departament = d.id_departament and c.nr_comanda=rc.nr_comanda
and a.id_angajat = c.id_angajat and d.denumire_departament like '%Sales%'
group by a.nume, a.comision, a.id_functie, d.denumire_departament
having sum(rc.pret*rc.cantitate) > 90000;

S-ar putea să vă placă și