Sunteți pe pagina 1din 12

Atestat 2010.

Subiecte baze de date


Atestat 2010. Subiecte baze de date
1. Se consider tabela ANGAJATI cu structura:
CNP, NUME, DATA_ANGAJARE, DATA_NASTERE, SALARIU.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze pe ecran toi angajaii cu o vechime mai mare de 10 ani;
c. tergei din baza de date toate persoanele cu numele dat de la tastatur;
d. Afiai pe ecran numele celor mai vechi angajai;
e. Modificai salariul persoanei cu numele Popescu mrindu-l cu 10%;
f. Afiai numrul de angajri din fiecare an.
Rezolvare
b.select * from angajati where ((sysdate-data_angajare)/365) >10
c.delete from angajati where nume=:x;
d. select nume from angajati where data_angajare=(select min(data_angajare) from
angajati);
e.select salariu+10*salariu/100 from angajati where nume='atomei alexandru';
g.

select count(*) as "nr_angajati" ,to_char(data_angajare,'yyyy') from


angajati group by to_char(data_angajare, 'yyyy')

2. Se consider tabela ELEVI cu structura:


NUME_PREN , NOTA_RO, NOTA_MAT, NOTA_GI, REZULTAT, MEDIE
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Completai cmpul Rezultat cu valoarea promovat daca elevul a promovat testul naional (note
minimum 5 la cele 3 discipline) nepromovat n caz contrar;
c. Pentru elevii promovai calculai media general la disciplina romn;
d. Determinai procentul de promovabilitate (nr elevi promovai / nr elevi nscrii);
e. Afiai elevii care au obinut cea mai mare medie;
f. Afiai pe ecran elevii grupai dup rezultat (promovat/nepromovat), apoi alfabetic dup nume;
Rezolvare
b. UPDATE ELEVI SET REZULTAT='NEPROMOVAT' WHERE NOTA_RO<5 OR NOTA_MAT<5 OR
NOTA_GI<5
UPDATE ELEVI SET REZULTAT='PROMOVAT' WHERE NOTA_RO>5 AND NOTA_MAT>5 AND NOTA_GI>5

c. select avg(nota_ro) from elevi where rezultat='promovat';


d.select ((select count (*) from elevi where rezultat='promovat')/(select count (*) from elevi)) from dual
e. select nume_pren, medie from elevi where medie=(select max(medie) from elevi);
f.select * from elevi order by rezultat desc, nume_pren
3. Se consider tabela FILME cu structura:
NUME, GEN, BUGET, DATA_AP
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Afiai pe ecran filmele gen comedie cu buget >10000;
c. Afiai toate filmele din tabela grupate pe genuri;
d. Afiai filmul care a avut cel mai mare buget;
e. tergei din tabel filmele in aprute nainte de 1-ian-1990;
f. Calculai bugetul total al tuturor filmelor gen aventur.
Rezolvare
1

Atestat 2010. Subiecte baze de date


b. select nume from filme where gen='comedie' and buget>1000;
c. select nume, gen, buget, data_ap from filme order by gen;
d. select nume_film from filme where buget=(select max(buget) from filme);
e. delete from filme where data_aparitie<'01-01-1990';
f. select sum(buget) from filme where gen='aventura';
4. Se consider tabela ELEVI cu structura:
NUME, CLASA, MEDIE, ABS_NEM
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare
b. Afiai elevul (elevii) cu media cea mai mare din clasa 12A;
c. Afiai pe ecran n ordine alfabetic elevii cu peste 20 absene nemotivate;
d. Aflai suma totala a absentelor nemotivate pe fiecare clasa;
e. tergei elevii cu peste 40 absene nemotivate;
f. Elevul Popescu Gigel se mut din clasa 12A n clasa 12B. Facei modificrile necesare.
REZOLVARE
b. select nume from elevi where medie=(select max(medie) from elevi where clasa='12 A') and
clasa='12 A';
c. select * from elevi where absente_nem>20 order by nume;
d. delete from elevi where absente_nem>40;
e.update elevi set clasa='12B' where nume='popescu gigel'
5. Se consider tabela PROFESORI cu structura:
NUME, GRAD, DATA_NAST, CATEDRA, SALAR, DIRIG
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare
b. Afiai profesorii cu gradul I;
c. Aflai salariul mediu pe coala si numrul de profesori care au mai puin de salariul mediu
d. Afiai alfabetic profesorii care sunt dirigini.
e. tergei din tabela profesorii care mplinesc 60 ani in anul calendaristic curent
f. Afiai numrul de profesori de la fiecare catedra.
Rezolvare
b.select nume from profesori where grad=1;
c .select count(*) from profesori where salar<(select avg(salariu) from profesori);
d. select nume from profesori where dirig='da' order by nume;
e.delete from profesori where (sysdate-data_nast)/365=60;
f.select count (*) ,catedra from profesori group by catedra
6. Se consider tabela EXCURSII cu structura:
DESTI NATIE, DATA_PL, PRET, DURATA, TRANSPORT (avion, autocar, etc)
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare
b. Afiai excursiile din tabela cu destinaia NISA ordonate cresctor dup data plecrii
c. Aflai destinaia (destinaiile) cea mai ieftina
d. Afiai excursiile din tabela grupate pe destinaii
e. Modificai preul la excursiile cu avionul (preul excursiei scade cu 25%)
f. tergei din tabela excursiile care s-au desfurat sau care sunt in curs de desfurare (au data
plecrii anterioara datei curente)
Rezolvare
b.select * from excursii where destinatie=nisa order by data_pl;
c.select destinatie from excursii where pret=(select min(pret) from excursii);
d.select destinatie from excursii group by destinatie;
e.update excursii set pret=pret-25*pret/100 where transport=avion;
f. delete from excursii where data_pl<=sysdate.
2

Atestat 2010. Subiecte baze de date


7. Se consider tabela CIOCOLATA cu structura:
SORTIMENT, PRET_BUC, FIRMA_PROD
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Afiai sortimentele de ciocolata ce au preul_bucata >20 Ron ordonata alfabetic dup firma
productoare;
c. Aflai firma (firmele) ce produce cea mai ieftina ciocolat;
d. Afiai pentru fiecare firm numrul de sortimente de ciocolat;
e. Modificai preul_bucata (scade cu 15%) la toate sortimentele firmei Primola;
f. tergei din tabela toate sortimentele firmei Poiana;
Rezolvare
b.select * from ciocolata where pret_buc>20 order by firma_prod;
c.select firma_prod from ciocolata where pret_buc=(select min(pret_buc) from
ciocolata);
d.select count(sortiment) from ciocolata group by firma_prod;
e.update ciocolata set pret_buc=pret_buc-15*pret_buc/100 where firma_prod
=primola;
f.delete from ciocolata where firma_prod=poiana.
8. Se consider tabela LIBRARIE cu structura:
TITLU, AUTOR, PRET_BUC, EDITURA
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Afiai toate crile autorului Mihai Eminescu ordonate descresctor dup pret;
c. Aflai costul total al tuturor crilor de la editura Donaris;
d. Afiai pentru fiecare autor numrul total al crilor sale;
e. Aflai cartea (crile) cea mai scump;
f. tergei din tabela crile cu preul mai mare de 25 Ron i aprute la editura X (X citit de la
tastatur);
Rezolvare
b.select * from librarie where autor='mihai eminescu' order by pret_buc desc;
c. select sum(pret_buc) from librarie where editura='donaris';
d. select autor, count(*) from librarie group by autor;
e.. select * from librarie where pret_buc=(select max(pret_buc) from librarie);
f.delete from librarie where pret_buc>20 and editura=:x;
9. Se consider tabela FARMACIE cu structura:
MEDICAMENT, DATA_EXP, PRET
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare
b. Afiai medicamentele care mai au o lun pn la expirare
c. Micorai preul cu 5% la medicamentul aspirin;
d. Aflai medicamentul(medicamentele) cel mai ieftin;
e. Aflai preul unui medicament dat de la tastatur;
f. tergei din tabela medicamentele care au data de expirare astzi.
Rezolvare
b.select * from farmacie where data_exp='11.03.2010';
c.update farmacie set pret=pret-5*pret/100 where medicament='aspirina';
d.select * from farmacie where pret=(select min(pret) from farmacie);
e.select pret from farmacie where medicament=:x;
f.delete from farmacie where data_exp='11.02.2010'.
3

Atestat 2010. Subiecte baze de date


10. Se consider tabela CONCURS cu structura :
NUME, NOTA1, NOTA2, NOTA3, NOTA_FIN, DATA_NAST, JUDET
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Calculai nota_fin (media aritmetica a celor 3 note) pentru fiecare candidat;
c. Afiai concurenii care au obinut nota final peste 7 in ordinea descresctoare a mediilor;
d. Afiai candidatul (candidaii) cu nota finala maxim;
e. Afiai mediile generale pe judee (media aritmetic a notelor finale pentru fiecare jude);
f. tergei concurenii care au media finala sub 5.
Rezolvare
b.update concurs set nota_fin=(nota1+ nota2+ nota3)/3;
c. select nume, nota_fin, judet from concurs where nota_fin>7 order by nota_fin desc;
d. select * from concurs where nota_fin=(select max(nota_fin) from concurs);
e. select judet, avg(nota_fin) from concurs group by judet;
f.delete from concurs where nota_fin<5.
11 Se consider tabela FIRME cu structura:
NUME, DATA_AP, ORAS, CAPITAL, NR_ANG
g. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
h. Afiai firmele care au cel puin 3 ani de la nfiinare ordonate alfabetic;
i. Afiai firmele din tabela grupate pe orae;
j. Aflai firma (firmele) cu cei mai muli angajai;
k. Mrii cu 10% capitalul social al firmei x preluat de la tastatur;
l. tergei din tabela firmele care au capital social <1000 Ron.
Rezolvare :
b. select * from firme where (sysdate-data_ap)/365>=3
c. select oras,nume from firme group by oras,nume
d. select nume from firme where nr_ang=(select max(nr_ang) from firme)
e. update firme set capital= capital+10*capital/100 where nume=:x
f. delete from firme where capital<1000.
12 Se consider tabela CARTI cu structura:
COD_CARTE, DENUMIRE_CARTE, AUTOR, AN_APARITIE, GEN, PRET.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze crile a cror pre nu depete 10 RON;
c. S se diminueze cu 10% preul crilor al cror an de apariie este introdus de la tastatur;
d. S se afieze valoarea crilor pentru fiecare autor a crui nume ncepe cu litera A;
e. S se afieze denumirea crii i autorul pentru care preul este maxim;
f. S se afieze cartea i autorul pe genuri literare.
Rezolvare:
b. select * from carti where pret<10;
c. update carti set pret=pret-10*pret/100
d. select autor,su(pret) from carti where autor like 'a%' group by autor
4

Atestat 2010. Subiecte baze de date


e. select pret, autor from carti where pret=(select max(pret) from carti)
f. select gen from carti group by gen
13 Se consider tabela TARI cu structura:
NUME, REGIUNE, SUPRAFATA, POPULATIE, PIB (produsul intern brut al unei ri).
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze rile a cror populaie este mai mare de 20 milioane;
c. S se afieze rile a cror regiune este introdus de la tastatur;
d. Afiai rile n ordine descresctoare a valorii produsului intern brut;
e. S se afieze rile cu suprafaa minim;
f. S se afieze numrul rilor pe regiuni.
Rezolvare :
b. select * from tari where populatie>2300000
c. select * from tari where regiune=:x
d. select * from tari order by pib desc
e. select * from tari where suprafata=(select min(suprafata) from tari13)
f. select regiune, count(regiune) from tari13 group by regiune
14 Se consider tabela SECTIE cu structura:
COD_SECTIE,DENUMIRE, NR_ANGAJATI, PRODUCTIE, CIFRA_A(cifra de afaceri),
PRODUCTIVITATE.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze seciile cu numrul de angajai mai mare de 1000;
c. S se completeze cmpul productivitate dup formula cifra de afaceri/numr de angajai;
d. Afiai seciile cu productivitatea cea mai mare;
e. S se tearg datele din baza de date pentru o secie a crui cod este introdus de la tastatur;
f. S se ordoneze cresctor dup producie.
Rezolvare:
b.select * from sectie14 where nr_angajati>1000
c.update sectie14 set productivitate=cifra_a/nr_angajati
d. select * from sectie14 where productivitate=(select max(productivitate) from sectie14)
e. delete from sectie14 where cod_sectie=:x
f. select * from sectie14 order by productivitate desc
15 Se consider tabela CLADIRI cu structura:
DENUMIRE, LOCALITATE, VAL_INV (valoarea investiiei), AN_CON (anul construirii),
INDICE, VAL_ACT (valoarea actualizat).
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze denumirea cldirilor a crei valoare actualizat este mai mic de 100.000
RON;
5

Atestat 2010. Subiecte baze de date


c. Modificai cmpul indice cu valoarea 1 pentru cldirile construite nainte de 1950 i cu 2
pentru cldirile construite dup 1950;
d. Afiai numrul cldirilor construite n anul 1970;
e. Afiai cte cldiri au fost construite n fiecare localitate;
f. S se afieze valoarea investiiei i anul construciei pentru o cldire a crei denumire este
introdus de la tastatur.
Rezolvare:
b.select * from cladiri where val_act<100000
c.update cladiri set indice=2 where an_con>=1950
update cladiri set indice=1 where an_con<1950;
d.select count(*) from cladiri where an_con=1970
e.select localitate, count(localitate) from cladiri group by localitate
f. select val_inv, an_con from cladiri where localitate=:x
16 Se consider tabela MATERIALE cu structura:
DEN_MAT, STOC_I (stoc iniial), INTRARI , IESIRI, STOC_F (stoc final)
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se completeze cmpul stoc final dup formula: stoc iniial+intrri-ieiri;
c. S se afieze materialele a cror stoc final este egal cu zero;
d. Afiai materialele n ordine cresctoare a stocurilor iniiale;
e. Afiai materialele pentru care valoarea intrrii este cea mai mic.
f. tergei din tabel materialele care au stocul final cuprins n intervalul a,b (a i b citite de la
tastatur);
Rezolvare:
b.update materiale set stoc_f=stoc_i+intrari-iesiri
c.select * from materiale where stoc_f=0
d.select * from materiale order by stoc_f
e.select * from materiale where intrari=(select min(intrari) from materiale)
f.insert into materiale (den_mat,stoc_i,intrari,iesiri,stoc_f) values('xxx',12,345,234,0);
17 Se consider tabela SPITALE cu structura:
NUME_P, DIAGNOSTIC, MEDIC, ETAJ , SALON.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. Lista alfabetic a pacienilor;
c. Afiai ci pacieni sunt internai avnd diagnosticulGRIPA
d. Afiai numrul de pacieni a fiecrui medic;
e. S se afieze care este salonul cu numr maxim de pacieni.
f. tergei din tabel nregistrarea corespunztoare unui pacient introdus de la tastatur.
Rezolvare:
b.select * from spitale order by nume_p
c.select count(*) nume_p from spitale where diagnostic='gripa'
6

Atestat 2010. Subiecte baze de date


d.select medic, count(medic) as "nr pacienti" from spitale group by medic
e.select salon, count(*) from spitale group by salon
f.delete from spitale where nume_p=:x
18 Se consider tabela SPORTIVI cu structura:
NUME, VARSTA, SEX, GREUTATE, NALTIME, SPORT .
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze sportivii de la haltere a cror greutate este de 80 kg;
c. Listai alfabetic sportivii ordonndu-i dup sporturile pe care le practic;
d. S se afieze ci sportivi practica Fotbal;
e. S se afieze care este sportivul cu nlimea cea mai mare care face handbal;
f. Afiai care este media de vrst pentru biei, respectiv pentru fete.
Rezolvare:
b. select * from sportivi where sport='haltere' and greutate=80
c. select * from sportivi order by sport
d. select count(*) from sportivi where sport='fotbal'
e.select nume from sportivi where inaltime=(select max(inaltime) from sportivi18) and
sport='fotbal'
f. select avg(varsta) from sportivi where sex='f'
select avg(varsta) from sportivi where sex='m'
19 Se consider tabela STATISTICA cu structura:
NUME, STUDII, OCUPAIA , DOMENIU, VENIT.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze cte persoane au venit peste 10 milioane;
c. S se tearg din baza de date informaiile corespunztoare studiilor introduse de la
tastatur;
d. Afiai care sunt persoanele cu venit maxim din domeniul educaiei;
e. S se afieze ct la sut reprezint persoanele cu ocupaia vnztor din acest sondaj;
f. S se determine venitul total pe domenii.
Rezolvare:
b.select count(*) from statistica where venit>10;
c.delete from statistica where studii=:x;
d. select nume from statistica where venit=(select max(venit) from statistica where domeniu
='constructii') and domeniu='constructii'
e.select (select count(*) from statistica where ocupatia='vanzator')/(select count(*) from
statistica) * 100 from dual
f. select sum(venit), domeniu from statistica1 group by domeniu
20 Se consider tabela ABONATI cu structura:
7

Atestat 2010. Subiecte baze de date


NUME, CNP, MIN_INCLUSE, MIN_UTILIZATE, VALOARE, ACHITAT, RETEA.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze pentru fiecare abonat valoarea facturii pe care trebuie s o achite cunoscnd c
minutele suplimentare cost cu 10% mai mult dect minutele incluse i c tariful unui minut
inclus este de 0,25 lei;
c. Afiai abonaii care sunt restani;
d. S se afieze abonaii cu valoarea facturat cea mai mare;
e. Pentru abonatul a crui CNP s-a introdus de la tastatur s se indice dac a achitat;
f. S se afieze valoarea obinut din ncasri pentru fiecare reea.
Rezolvare:
b. alter table abonati20 add factura number
update abonati set factura=0.25*min_incluse where (min_utilizate-min_incluse)<=0;
update abonati set factura=0.25*min_incluse+0.275*(min_utilizate-min_incluse) where (min_utilizatemin_incluse)>0;
c. select * from abonati where achitat=0;
d. select nume from abonati where factura=(select max(factura) from abonati);
e.select achitat from abonati where cnp=:x;
f.select sum(factura) retea from abonati group by retea
21 Se consider tabela STUDENTI cu structura:
NUME, CNP, AN, MEDIE, BURSA.
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze ci studeni primesc burs din anul I;
c. Afiai studenii care au burs de merit(media peste 9,50 inclusiv);
d. Afiai numrul studenilor bursieri din fiecare an;
e. Afiai care este valoarea maxima a bursei dup mrirea cu 20%
f. S se tearg studenii care au pierdut bursa(media este sub 8).
Rezolvare:
a.select count(*) from studenti21 where bursa< >0 and an=1;
b. select nume from studenti21 where medie>=9.5;
c.select count(*), an from studenti21 where bursa< >0 group by an;
d.update studenti21 set bursa=bursa+20*bursa/100
e.select bursa from studenti21 where bursa=(select max(bursa) from studenti21);
f.delete from studenti21 where medie<=8.

a.
b.
c.
d.

22 Se consider tabela ELEVI cu structura:


CODELEV, NUME, PRENUME, CLASA, MEDIA, CODSEFCLASA
S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
S se afieze n ordinea alfabetic primii 3 elevi din clasa C (C citit de la tastatur);
Ci elevi al cror nume se termin cu litera U sunt n tabel?
Pentru fiecare clas din tabel s se calculeze media pe clas; rezultatele se vor afia n formatul
Media clasei este .; Coloana rezultat va avea aliasul Medii;
8

Atestat 2010. Subiecte baze de date


e. S se afieze elevii cu cea mai mare medie. Se vor afia primele trei linii (dac exist);
f. S se afieze elevii i efii lor de clas n formatul: eful de clas al elevului .. este ..;
Rezolvare:
b.select nume from elevi22 where clasa=:x and rownum<=3
c.select count(nume) from ELEVI22 where nume LIKE '%u'
d.select clasa ,avg(media)as "medii" from elevi22 group by clasa
e.select nume,prenume from elevi22 where media=(select max(media) from elevi22) and rownum<=3
f.select nume,codsefclasa from elevi22 order by nume,codsefclasa
23 Se consider tabela PARIURI cu structura:
CODPARIU, PERSOANA, CAL, SUMA, DATA
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze toate persoanele care au pariat n trimestrul 1. Informaiile se vor afia n formatul:
Persoana a pariat n data de . suma de . pe calul ;
c. Persoana de la pariul cu codul X si-a triplat suma pariat. Actualizai tabela.
d. Cte persoane au pariat n luna curent pe calul cu numele C? (C dat de la tastatur);
e. Calul cu numele X s-a mbolnvit. S se tearg toate pariurile din luna curent pe acest cal;
f. S se afieze numele persoanei/persoanelor cu cea mai mare sum pariat la un pariu;
Rezolvare
b.select persoana || persoana || a pariat in data de || data|| suma de ||suma|| pe calul ||cal|| from
pariuri where to_char(data,mm<=3)
c.update pariuri set suma=suma*3 where codpariu=100 select * from pariuri
d.select count(persoana) from pariuri where to_char(data,mm)=to_char(sysdate,mm) and
to_char(data,yyyy)=to_char(sysdate ,yyyy) and cal=:c
e.delete from pariuri where cal=:x;
f.select persoana from pariuri where suma=(select max(suma) from pariuri)
24 Se consider tabelele ECHIPE i MECIURI cu structurile:
ECHIPE (ID, NUME, ORA)
MECIURI (ID, ID_ECHIPA1, ID_ECHIPA2, GOL1, GOL2, DATA)
a. S se creeze tabelele i s se introduc cte 6 articole care s corespund cerinelor urmtoare;
b. Afiai n ordine alfabetic toate echipele cu numele ncepnd cu litera S; Prima liter din numele
echipei va fi liter mare, restul vor fi litere mici;
c. Meciurile din data D (citit de la tastatur) au fost amnate cu 7 zile. Actualizai tabela;
d. Adugai o nou echip cu id-ul 1001, numele Sperana care s fie acelai ora cu echipa cu
numele X (X citit de la tastatur);
e. tergei din tabel meciurile disputate n zilele de joi;
f. Afiai toate meciurile n formatul:NumeEchipa1 NumeEchipa2: Gol1 Gol2;
Rezolvare
b. update echipe set nume=initcap(nume);
select nume from echipe where nume like S% order by nume;
c. update meciuri set data=data+7 where data=:d;
d. insert into echipe (id, nume, oras) value (1001, speranta, (select oras from echipe where nume=:x));
e. delete from meciuri where to_char(data, day)=miercuri;
f. select p.nume as nume echipa 1, (select p.nume from echipe p,meciuri f where p.id=f.id_echipa2) as
nume echipa 1, f.gol1, f.gol2 from echipe p, meciuri f where p.id=f.id_echipa1;
9

Atestat 2010. Subiecte baze de date


25 Se consider tabelele ANGAJAI i DEPARTAMENTE cu structurile:
ANGAJAI (ID, NUME, PRENUME, DATA_ANGAJARE, SALARIU, ID_DEP)
DEPARTAMENTE (ID, DENUMIRE)
a. S se creeze tabelele i s se introduc cte 6 articole care s corespund cerinelor urmtoare;
b. Salariul persoanelor angajate de cel puin 10 luni se mrete cu 10%. Actualizai tabela ANGAJAI;
c. S se adauge un nou angajat care s lucreze n acelai departament cu angajatul cu numele Y (Y citi
de la tastatur);
d. Departamentul cu denumirea D (D citit de la tastatur) s-a desfiinat. Actualizai cele dou tabele,
tergnd departamentul i angajaii care lucreaz n acest departament;
e. S se afieze toi angajaii din departamentul cu denumirea X (X citit de la tastatur); Informaiile vor
fi afiate n formatul Angajatul .. lucreaz n departamentul ..
f. S se afieze salariul maxim pentru fiecare departament. Rezultatele vor fi afiate n formatul
Salariul maxim din departamentul .. este ... Coloana rezultat va avea aliasul SALARII.
Rezolvare
b. UPDATE ANGAJATI1 SET SALARIU=(SALARIU +(10/100)*SALARIU) WHERE ((SYSDATEDATA_A)>310)
c. INSERT INTO ANGAJATIa1(ID, NUME, PRENUME, DATA_A, ID_DEP, SALARIU) VALUES
('5', 'MHH', 'WXX', '04-06-2008', (SELECT ID_DEP FROM ANGAJATI1 WHERE NUME=:Y), '1111')
d. delete from angajati where id_dep=:x
delete from departamente where id=34;
e. select nume as "angajatul lucreaza la ", d.denumire as "departamentul.." from angajati1 a,
departamente d where a.id_dep=(select id from departamente where denumire=:x) and a.id_dep=d.id;
f. select (salariul maxim din departamentul ||id_dep|| este || max(salariu)) as salarii from angajati
group by id_dep, salariu
26 Se consider tabelele: TURITI i EXCURSII cu structurile:
TURITI (COD, NUME, SEX, COD_EXC)
EXCURSII (COD , DESTINAIE , DATA_INCEPUT, DATA_SFARSIT, PRET)
a. S se creeze tabelele i s se introduc cte 6 articole care s corespund cerinelor urmtoare;
b. S se afieze destinaiile n ordine alfabetic. Fiecare destinaie va fi afiat o singur dat;
c. Excursiile care vor avea loc la Predeal n lunile de iarn s-au ieftinit cu 100 lei. Actualizai tabela
EXCURSII;
d. tergei din tabel turistul cu numele X (X citit de la tastatur);
e. Ci turiti au ales destinaia Vatra Dornei?
f. Afiai turitii care au participat la excursii cu durata mai mare de 7 zile. Informaiile vor fi afiate n
formatul: Turistul . a participat la excursia .n perioada . - ..
Rezolvare:
b.select *from excursii order by destinatie.
c.select count(*) from excursii where destinatie='Vatra Dornei'
d.delete from turisti where nume=:x;
f. select a.nume from turisti a,excursii b where a.cod=b.cod and data_sfarsit-data_inceput>7;

27 Se consider tabelele NUMERE1 i NUMERE2 cu structurile:


NUMERE1 ( CIFRA )
NUMERE2 ( CIFRA )
a. S se completeze fiecare din cele dou tabele cu cifrele de la 1 la 5;
10

Atestat 2010. Subiecte baze de date


b. S se afieze cifrele din a doua tabel folosind scrierea cu cifre romane;
c. S se afieze tabla nmulirii pn la 5 n formatul cifra x cifra = rezultat; se vor afia primele 20 de
linii;
d. S se afieze tabla nmulirii cu X (X<6 cifr nenul citit de la tastatur);
e. S se afieze ctul i restul mpririi cifrei X la toate celelalte cifre n formatul cifra / cifra = (cat,
rest) X (X<6 cifr nenul citit de la tastatur);
f. Cifrele din prima tabel se vor inversa: 5,4,3,2,1. Actualizai tabela.
Rezolvare:
b.select to_char(cifra,'RM') from numere2
c.select a.cifra || '*' || b.cifra || '=' || a.cifra*b.cifra from numere1 a,numere2 b
d.select a.cifra || '*' || :x || '=' || a.cifra*:x from numere1 a
e.select :x || '/' || a.cifra || '=' || :x/a.cifra || ' restul= ' || MOD(:x,a.cifra) from numere1 a
f.select *from numere1 order by cifra desc
28 Se consider tabela PACHETE cu structura
EXPEDITOR, DESTINATAR, DATA_EXPEDIERE, CATEGORIA, GREUTATE
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze in ordine alfabetic a destinatarului pachetele care nu au completat expeditorul;
c. S se calculeze media aritmetic a greutilor pachetelor din tabel;
d. Se completeaz cu NECUNOSCUT toi expeditorii nespecificai i cu data de astzi toate datele de
expediere necompletate;
e. S se tearg toate pachetele expediate anul trecut care au greutatea mai mic dect X (citit de la
tastatur);
f. Care este destinatarul care a primit cele mai multe pachete?
Rezolvare:
b.select * from pachete where expeditor=' ' order by destinatar;
c.select avg(greutate) from pachete;
d.update pachete set expeditor='NECUNOSCUT' where expeditor='0'
e.delete from pachete where data_ex>31-12-2008 and data_ex<01-01-2010 and
greutate<:x;
f.select destinatar from pachete where greutate=(select max(greutate) from pachete)

29 Se consider tabela PRODUSE cu structura:


ID, DENUMIRE, CATEGORIE, DATA_EXP, PRE, CANTITATE
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
b. S se afieze produsele care expir astzi; se vor afia doar primele 5 linii;
c. Care este valoarea total a produselor din tabel? Afiai n formatul Valoarea total este.;
d. Produsele care expir mine se ieftinesc cu 50%. Actualizai tabela;
e. S se adauge un nou produs care s fie n aceeai categorie cu produsul cu id-ul egal cu 4.
f. S se afieze categoria / categoriile care conine cele mai multe produse;
b.select denumire,rownum from produse where data_exp ='11-03-2011' and rownum<=5
c.select 'valoarea totala este'|| sum(pret*cantitate) from produse
d.update produse set pret=0.5* pret where data_exp-1=sysdate
e.insert into produse (id, denumire, categorie, data_exp, cantitate) values (20,'cozonac', select categorie
from produse where id='4', '24-03-2010', 13,31)
f.select categorie, count(*) from produse group by categorie having count(*)=(select max(count(*)) from
produse group by categorie)
30 Se consider tabela FOTBALI TI cu structura:
NUME, ECHIP, POST, NRMECIURI, GOLURIMARCATE
a. S se creeze tabela i s se introduc 10 articole care s corespund cerinelor urmtoare;
11

Atestat 2010. Subiecte baze de date


b. Afiai toi juctorii echipei Ceahlul;
c. Afiai juctorii grupai pe echipe, iar n cadrul echipelor pe posturi
d. Mijlocaul Ronaldo s-a transferat la echipa Cimentul;
e. tergei din tabel un juctor cu numele citit de la tastatur;
f. Afiai atacantul cu cel mai mare procent de reuit (numrul de goluri marcate/ numrul de
meciuri jucate);
Rezolvare:
a.select * from fotbalisti30
b.select * from fotbalisti where echipa='ceahlau'
c.select nume,echipa,post from fotbalisti30 order by echipa,post,nume
d.update fotbalisti30 set echipa='ceahlau' where nume='ronaldo'
e.delete from fotbalisti30 where nume=:x
f.select procent as (nrmeciuri/golurimarcate),nrmeciuri,golurimarcate from fotbalisti30 where
procent=(select max(procent) from fotbalisti30)

12