You are on page 1of 3

Interogari exercitii Partea I: functii, operatori, jonctiuni In aceste exercitii utilizati tabelele My_emp, My_dept si My_jobs create pe baza

a tabelelor Employees, Departmens si Jobs din schema (user-ul) HR astfel: DROP TABLE MY_EMP; DROP TABLE MY_DEPT; DROP TABLE MY_JOBS; CREATE TABLE MY_EMP AS SELECT * FROM HR.EMPLOYEES; CREATE TABLE MY_DEPT AS SELECT * FROM HR.DEPARTMENTS; CREATE TABLE MY_JOBS AS SELECT * FROM HR.JOBS; Strucura acestor tabele este prezentata in tabelele urmatoare: MY_EMP: Name Null? Type EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID MY_DEPT: Name DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID NOT NULL NOT NULL NOT NULL NOT NULL NUMBER(6) VARCHAR2(20) VARCHAR2(25) VARCHAR2(25) VARCHAR2(20) DATE VARCHAR2(10) NUMBER(8,2) NUMBER(2,2) NUMBER(6) NUMBER(4)

Null? NOT NULL

Type NUMBER(4) VARCHAR2(30) NUMBER(6) NUMBER(4)

MY_JOBS: Name JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY

Null? NOT NULL

Type VARCHAR2(10) VARCHAR2(35) NUMBER(6) NUMBER(6)

Exercitii: 1. Sa se selecteze din tabela my_emp numai angajatii care au salariul cuprins intre 8000 si 10000. select id_angajat, nume, salariul from angajati where salariul between 8000 and 10000 order by id_angajat 2. Sa se selecteze din tabela my_emp numai angajatii care au functia (job_id) SA_REP. select * from angajati where id_functie = 'SA_REP' 3. Modificati conditia de sus astfel incat sa fie selectati si cei care au in denumirea functiei atributul ACCOUNT. select * from angajati where id_functie like '%ACCOUNT%' 4. Sa se selecteze toti angajatii pentru care a doua litera din e-mail este A, B sau S. select * from angajati where upper(email) like '*A%' or upper(email) like '*B%' or upper(email) like '*S%'; select * from angajati where substr(email,2,1) in ('A','B','S') 5. Sa se selecteze toti angajatii care au numarul de telefon format din al doilea grup de cifre din 124 (de exemplu: 515.124.4569) select * from angajati where telefon like '%.124.%' 6. Sa se selecteze toti angajatii angajati inainte de 1ianuarie 2000 (hire_date). select * from angajati where data_angajare < to_date('01.01.2000','dd.mm.yyyy') 7. Modificati conditia de mai sus astfel incat sa afisati numai angajatii nascuti in ianuarie 2000. select * from angajati where to_char(data_angajare, 'mm.yyyy')='01.2000' 8. Sa se selecteze numele, salariul si functia angajatiilor din departamentul IT (department_name din tabela my_dept). select nume, salariul, id_functie from angajati where id_departament IN (select id_departament from departamente where lower(denumire_departament) like '%it%') 9. Modificati conditia de mai sus astfel incat sa fie selectati toti angajatii din departamentele care au in denumire specificatia IT. 10. Sa se selecteze numele, salariul si departamentul angajatiilor care au functia de Programmer (JOB_TITLE din tabela my_jobs). select * from angajati where id_functie IN (select id_functie from functii where lower(denumire_functie)='programmer') 11. Modificati conditia de mai sus astfel incat sa afisati toti angajatii cu functii de Manager (de exemplu Finance Manager sau Purchasing Manager etc). select * from angajati where id_functie IN (select id_functie from functii where lower(denumire_functie) like '%manager')

12. Sa se selecteze numele si salariul angajatiilor din departamentele cu specific IT (care contin in denumire IT) si care au functia de Programmer sau Manager. select * from angajati where id_departament in (select id_departament from departamente where denumire_departament like '%IT%') and id_functie in (select id_functie from functii where lower(denumire_functie) like '%programmer%' or lower(denumire_functie) like '%manager%'); 13. Afisati numele si in ordine crescatoare salariile si in ordine descrescatoare data angajarii penru salariatii din departamentul Sales. select nume, salariul, data_angajare from angajati where id_departament in (select id_departament from departamente where lower(denumire_departament) like '%sales%') order by salariul, data_angajare desc 14. 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 15. Afisati numele, comisionul si functia angajatilor din departamentul Sales si calculati suma primita prin aplicarea comisionului la volumul vanzarilor de 20000 de euro. select nume, comision, id_functie, comision*20000 suma from angajati where id_departament in (select id_departament from departamente where lower(denumire_departament) like '%sales%') 16. Introduceti o conditie in interogarea de mai sus pentru afisarea angajatilor cu un valoare a acestei sume mai mare de 3000 euro. Ordonati descrescator aceste valori. select nume, comision, id_functie, comision*20000 suma from angajati where id_departament in (select id_departament from departamente where lower(denumire_departament) like '%sales%') and comision*20000> 3000 order by comision*20000

You might also like