Loading documents preview...
Subiecte ORACLE 15 ianuarie 2008 Subiectul nr. 1 Modificaţi salariile angajaţilor ce figurează în tabela F_STAFFS adăugând un bonus de 0.50 $ la creşterea de 5% propusă de manager. Prezentaţi diagrama de tabelă corespunzătoare tabelei F_STAFFS. REzolvarea subiectului 1. SELECT last_name, salary*.05 + .50 FROM f_staffs;
Subiectul nr. 2 Sue, Bob şi Monique sunt angajaţii lunii. Utilizând tabela F_STAFFS, afişaţi un tabel în care numele lor să apară astfel: Super Star ***Sue***Sue*** ***Bob***Bob*** ***Monique***Monique***
Rezolvarea subiectului 2 SELECT '***'||first_name||'***'||first_name||'***' AS "Super Star" FROM f_staffs Subiectul nr.3 Utilizând cuvintele "Oracle," "Internet," şi "Academy," afişaţi prin comandă unică mesajul: The Best Class Oracle Internet Academy Rezolvarea subiectului 3. SELECT 'Oracle' "The", 'Internet' "Best", 'Academy' "Class" FROM DUAL Subiectul nr.4 Care este poziţia caracterului " I " în "Oracle Internet Academy"? Rezolvarea subiectului 4. SELECT INSTR('Oracle Internet Academy', 'I') FROM DUAL Subiectul nr.5 Aplicaţi asupra şirul de caractere "Oracle Internet Academy", acele funcţii care şi comenzi care să-l transforme în: Oracle$$$Internet$$$Academy Rezolvarea subiectului 5. SELECT RPAD('Oracle',9,'$')||RPAD('Internet',11,'$')||'Academy' FROM DUAL
1
Subiectul nr.6 Realizaţi un raport cu informaţiile din câmpurile last_name şi salary pentru acei angajaţi din tabela EMPLOYEES al căror employee_id este cuprins între valorile 100 şi 200. Includeţi o a treia coloană cu valoarea noului salariu al angajaţilor obţinută prin împărţire la 1.55, rezultat “rotunjit” apoi la două zecimale. Rezolvarea subiectului 6. SELECT last_name, salary, ROUND(salary/1.55,2) FROM EMPLOYEES WHERE employee_id BETWEEN 100 AND 102 Subiectul nr.7 Afişaţi informaţiile din câmpurile last_name şi salary pentru acei angajaţi din tabela EMPLOYEES al căror employee_id este egal cu 100. Includeţi o a treia coloană cu valoarea noului salariu al angajaţilor obţinută prin creşterea cu 5.33%, rezultat “trunchiat” apoi la două zecimale. Rezolvarea subiectului 7. SELECT last_name, salary, TRUNC(salary*0.0533,2) FROM EMPLOYEES WHERE employee_id=100 Subiectul nr.8 Afişaţi informaţiile din câmpurile last_name pentru acei angajaţi din tabela EMPLOYEES care au salariul (salary) multiplu de 3. Prezentaţi şi diagrama de tabelă corespunzătoare tabelei EMPLOYEES . Rezolvarea subiectului 8. SELECT last_name FROM EMPLOYEES WHERE MOD(salary,3)=0 Subiectul nr.9 “Încheiaţi studiul pe care l-aţi avut ca temă în ultima zi a acestei luni” este indicaţia profesorului. Afişaţi numele respectivei zile etichetată cu “Deadline”. Rezolvarea subiectului 9. SELECT LAST_DAY(SYSDATE) "Deadline" FROM DUAL Subiectul nr.10 Listaţi zilele aniversare pentru toţi angajaţii firmei Global Fast Food în formatul Month DD, YYYY. Eliminaţi zerourile aferente. Prezentaţi diagrama de tabelă corespunzătoare tabelei F_STAFFS. Rezolvarea subiectului 10. SELECT last_name, birthdate, TO_CHAR(birthdate,'MONTH DD YYYY') FROM F_STAFFS Subiectul nr.11 2
Pat Fay este angajatul care a primit o majorare de salariu de $2,000 . Afişati pentru ea prenumele, salariul curent, precum şi noul salariu etichetat cu aliasul “New Salary”. Pentru ambele coloane salariu, modul de afişare să conţină semnul “$” şi rezumaţi salariul la două zecimale. Rezolvarea subiectului11. SELECT first_name, last_name, TO_CHAR(salary,'$99999.99'), TO_CHAR(salary+2000,'$99999.99') "AS New Salary" FROM EMPLOYEES WHERE last_name='Fay' Subiectul nr.12 Listaţi o situaţie care să prezinte câmpurile name, start_date, şi end_date cu promoţiile produselor firmei Global Fast Foods din tabela F_PROMOTIONAL_MENUS. Dacă data finală a ofertei este data curentă, actualizaţi end_date prin mesajul “end in two weeks", iar pentru produsele fără dată finală treceţi data curentă. Rezolvarea subiectului 12. SELECT name, start_date, NVL2(end_date,'end in two weeks',SYSDATE) FROM F_PROMOTIONAL_MENUS Subiectul nr.13 Utilizaţi baza de date EMPLOYEES pentru a afişa câmpurile department_id, last_name, salary şi o nouă coloană cu aliasul "New Salary" ale cărei valori îndeplinesc condiţiile: dacă department_id i=10 atunci salary= 1.25 * salary dacă department_id i=90 atunci salary= 1.5 * salary dacă department_id i=130 atunci salary= 1.75 * salary pentru restul departamentelor salariul rămânând neschimbat. Rezolvarea subiectului 13 SELECT department_id, last_name, salary, CASE department_id WHEN 10 THEN 1.25*salary WHEN 90 THEN 1.5*salary WHEN 130 THEN 1.75*salary ELSE salary END AS "New Salary" FROM EMPLOYEES Subiectul nr.14 Afişaţi salariul mediu pentru angajaţii firmei “Global Fast Food” înregistraţi în baza de date F_STAFFS cu manager_id=19.
Rezolvarea subiectului 14 SELECT manager_id, AVG(salary) FROM f_staffs WHERE manager_id=19 GROUP BY manager_id;
Subiectul nr.15 3
În câte locaţii diferite(loc_type) îşi desfăşoară activitatea firma “DJ on Demand” ?. Prezentaţi şi diagrama de tabelă corespunzătoare tabelei D_VENUES. Rezolvarea subiectului 15 SELECT COUNT (DISTINCT loc_type) FROM d_venues;
Subiectul nr.16 Listaţi numele (last_name) tuturor angajaţilor al căror salariu este identic cu salariul minim pe întreprindere. Prezentaţi şi diagrama de tabelă corespunzătoare tabelei EMPLOYEES. Rezolvarea subiectului 16 SELECT last_name FROM employes WHERE salary = ANY (SELECT MIN (salary) FROM employees GROUP BY department_id)
Subiectul nr.17 Cum se numeşte este angajatul cu cel mai mic salariu din firmă ?. Prezentaţi diagrama de tabelă corespunzătoare tabelei F_STAFFS, cea care conţine informaţia cerută. Rezolvarea subiectului 17 SELECT first_name, last_name FROM f_staffs WHERE salary = (SELECT min(salary) FROM f_staffs)
Subiectul nr.18 Preluaţi din tabela D_SONGS câmpurile: titlul melodiei (title), numele artistului (artist), iar din tabela D_TYPES “descrierea lucrării ” (description) pentru a lista informaţii necesare unui “fan”. Rezolvarea subiectului 18 SELECT s.title, t.description, s.artist FROM D_SONGS s, D_TYPES t WHERE s.type_code=t.code Subiectul nr.19 Afişaţi numele tuturor angajaţilor (last_name), departamentul (department_id) din tabela EMPLOYEES dar şi numele departamentului (department_name) din tabela DEPARTMENTS chiar dacă există şi angajaţi pentru care nu este asignat un departament. Rezolvarea subiectului 19 SELECT e.last_name, e.department_id, d.department_name FROM EMPLOYEES e, DEPARTMENTS d WHERE e.department_id=d.department_id(+) Subiectul nr.20 Afişaţi angajaţii din toate departamentele (department_name, department_id) din tabela DEPARTMENTS chiar dacă în tabela EMPLOYEES ce conţine numele angajaţilor (last_name) şi departamentul (department_id) există şi departamente fără angajaţi. Rezolvarea subiectului 20 4
SELECT e.last_name, d.department_id, d.department_name FROM EMPLOYEES e, DEPARTMENTS d WHERE e.department_id(+)=d.department_id Subiectul nr.21 Realizaţi un cross-join pentru a afişa toate departamentele (department_name) DEPARTMENTS şi numele angajaţilor (last_name) din tabela EMPLOYEES.
din tabela
Rezolvarea subiectului 21 SELECT e.last_name, d.department_name FROM EMPLOYEES e CROSS JOIN DEPARTMENTS d Subiectul nr.22 Realizaţi un natural-join prin coloana location_id între tabelele DEPARTMENTS (department_name, department_id) şi LOCATIONS ( location_id, city) pentru a afişa numele şi id-ul departamentului, id –ul locaţiei şi oraşul. Rezolvarea subiectului 22 SELECT d.department_id, d.department_name, location_id, l.city FROM DEPARTMENTS d NATURAL JOIN LOCATIONS l Subiectul nr.23 Realizaţi un natural-join prin coloana location_id între tabelele DEPARTMENTS (department_name, department_id) şi LOCATIONS ( location_id, city) pentru a afişa numele şi id-ul departamentului, id –ul locaţiei şi oraşul. Restrângeţi lista doar la departamentele cu Id=20 şi 50. Rezolvarea subiectului 23 SELECT d.department_id, d.department_name, location_id, l.city FROM DEPARTMENTS d NATURAL JOIN LOCATIONS l WHERE d.department_id IN (20, 50) Subiectul nr.24 Creaţi tabela Grad_Candidates după modelul:
Confirmaţi crearea cu DESCRIBE. Rezolvarea subiectului 24 CREATE TABLE GRAD_CANDIDATES (STUDENT_ID NUMBER (6), LAST_NAME VARCHAR2(15),FIRST_NAME VARCHAR2(15),CREDITS NUMBER(3), GRADUATION_DATE DATE);
5
Subiectul nr.25 Fie tabela: ID 12 9
MANAG MANAG FIRST_NA LAST_N BIRTHDAT SALA OVERTIM TRAININ STAFF_T MANAGER_ ER_ BU ER_TA ME AME E RY E_RATE G YPE ID DGET RGET Sue Bob
Doe Miller
01-07-1980 19-03-1979
6,75 10
10,25 1,5
Grill
Order Taker 19 Cook 19
-
-
Inseraţi o înregistrare cu valorile (Id=19, First_name=Monique, Last_name=Miller, Birthdate=’3003-1969’Salarv=60, Overtime=Null,Training=Null, Staff_TVPE=’Manager’, Manager_Id=’Null’, Manager_buget=Null,Manager_Target=Null). Rezolvarea subiectului 25 INSERT INTO F_STAFFS VALUES(19,'MONIQUE','TUTTLE','30-031969',60,NULL,NULL,'MANAGER',NULL,NULL,NULL); Subiectul nr.26 Tabela F_STAFFS conţine trei înregistrări. Monique Tuttle renunţă la slujbă pentru a se întoarce la colegiu.
ID 12 9 19
FIRST_NA LAST_NAM ME E BIRTHDATE Sue Doe 01-07-1980 Bob Miller 19-03-1979 Monique Tuttle 30-03-1969
OVERT IME_ STAFF_TYP MANAGE SALARY RATE TRAINING E R_ID 6,75 10,25 Order Taker 19 10 ,75 Grill Cook 19 60 Manager 19
MANAGE MANAG R_BUDGE ER_TAR T GET -
După ştergerea înregistrării tabela trebuie să arate astfel. Scrieţi comanda corespunzătoare.
ID 12 9
FIRST_NAM LAST_NA E ME BIRTHDATE Sue Doe 01-07-1980 Bob Miller 19-03-1979
SALARY 6,75 10
Rezolvarea subiectului 26 DELETE f_staffs WHERE ID = 19;
6
MANA MANAGE MANA OVERTIM STAFF_TYP GER_I R_BUDG GER_T E_RATE TRAINING E D ET ARGET 10,25 Order Taker 19 ,75 Grill Cook 19 -