Documentos de Académico
Documentos de Profesional
Documentos de Cultura
create table emp (id number(2) primary key, nume varchar2(30), dept number(2),
vechime number(2));
insert into emp values ( 1, 'popescu', 10, 15);
insert into emp values ( 2, 'vasile', 10, 25);
insert into emp values ( 3, 'dumitru', 20, 3);
insert into emp values ( 4, 'ionel', 10, 21);
insert into emp values ( 5, 'angela', 20, 6);
create table dept (id number(2) primary key, id_sef number(2) references emp(id));
insert into dept values (10, 1);
insert into dept values (20, 5);
Rezultat: popescu
2. Să se scrie o cerere sql care face o listă cu șefii de departament care au cei mai
mulți angajați care nu au primit niciun comision.
Rezultat: popescu
3. Sa se scrie o cerere care face o lista cu distribuitia angajatilor pe grupe de
salarizare:
grupa 1 - salariatii cu sal mai mici de 1500
grupa 2 – sal mai mari de 1500
Antet: denumire departament, nume, ani vechime, luni vechime, grupa salarizare
4. Sa se scrie o cerere care face o lista cu angajatii care au venituri (sal + comm) mai
mici decat venitul sefului direct si vechimea mai mare decat vechimea presedintelui
companiei (calculata in ani).
Antet: nume_subaltern, venit_subaltern, an_vechime_subaltern, nume_sef,
venit_sef, an_vechime_presedinte
5. O cerere sql care sa listeze angajatii care au salariul mai mare decat salariul
mediu pe departamentul din care fac parte, dar numai din departamentul cu cele
mai multe salarii peste salariul mediu pe departament.
Pe urma scriu toti angajatii care au salariu mai mare decat aceste medii, pe departamente:
create table tt as (
select DISTINCT a.nume, a.dept, t.avg
from emp a,
(select avg(salariu) avg, dept d
from emp
group by dept) t
where a.salariu > t.avg AND a.dept = t.d);
select * from tt;
In final, dintre acestia ii aleg pe cei care apartin departamentului cu cele mai multe intrari
(in tabelul creat anterior).
In fine:
select DISTINCT a.nume
from emp a, tt,
(select count(dept) C, dept D
from tt
having count(dept) = ( select max(count(dept)) from tt group by dept )
group by dept) new
where a.dept = new.D AND tt.avg < a.salariu AND tt.dept = new.D;