Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
6Activity
0 of .
Results for:
No results containing your search query
P. 1
bd-rez

bd-rez

Ratings: (0)|Views: 436|Likes:
Published by meredith14

More info:

Published by: meredith14 on Nov 21, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/12/2013

pdf

text

original

 
Subiectul 1
1.
Situaţia : Total şefi 1980-1985 1986-1990 după 1990, reprezentând în prima coloanănumărul total al şefilor, iar în coloanele următoare numărul total al şefilor încadraţi înperioada ce reprezintă antetul coloanei.
 
SELECT
count(distinct(mgr)) TOTAL_SEFI,sum(case when to_char(hiredate,'yyyy') between 1980 and 1985 and empno in(select distinct mgr fromemp) then 1 else 0 end) "1980-1985",sum(case when to_char(hiredate,'yyyy') between 1986 and 1990 and empno in(select distinct mgr fromemp) then 1 else 0 end) "1986-1990",sum(case when to_char(hiredate,'yyyy') >1990 and empno in(select distinct mgr from emp) then 1 else0 end) "DUPA 1990"
FROM
emp;2.
Numele angajaţilor care nu sunt şefi .
 
SELECT
ename
FROM
emp a
WHERE
not exists (
select
*
from
emp b
where
a.empno=b.mgr); 
3. Numele angajatului, salariul şi maximul salariilor medii ale departamentelor, pentruangajaţii care au salariul mai mare decât maximul salariilor medii ale departamentelor.SELECT
ename, sal, x.max_sal_med
FROM
emp a,(
SELECT
max(avg(sal)) max_sal_med
FROM
emp
GROUP BY
deptno ) x
WHERE
sal>x.max_sal_med;4.
Numele departamentului şi numărul mediu de săptămâni lucrate în fiecare departament înanul 1981, dacă numărul mediu de săptămâni lucrate este peste 26
.
S
ELECT
 
dname, x.nr_sapt
FROM
dept,(
SELECT
avg(52-to_char(hiredate,'ww')) nr_sapt
FROM
emp
WHER 
E
to_char(hiredate,'yyyy')=1981
GROUP
BY
deptno) x
WHERE
x.nr_sapt>26 ; 
Subiectul 2
1.
Situaţia : Total salarii şefi Plătite în departamentul 10 Plătite în departamentul 20Plătite în departamentul 30
 
SELECT
sum(sal), sum(decode(deptno,10,sal,0))"Dept 10",sum(decode(deptno,20,sal,0))"Dept 20",sum(decode(deptno,30,sal,0))"Dept 30"
FROM
emp
WHERE
empno in(select mgr from emp);2.
Numele angajaţilor de pe nivelul 2 al ierarhiei organizaţiei.
 
SELECT
ename
FROM
emp
WHERE
mgr=(
select
empno
from
emp
where
ename='KING');3.
Numele angajatului, minimul salariului mediu al localitaţilor, salariul angajatului,maximul salariului mediu al localităţilor, pentru cei ce au salariul cuprins între minimulsalariului mediu al localitaţilor şi maximul salariului mediu al localităţilor.
 
SELECT
ename, x.min_sal_med, sal, x.max_sal_med
FROM
emp ,(
SELECT
min(avg(sal)) min_sal_med,max(avg(sal)) max_sal_med
FROM
emp b, dept
WHERE
 b.deptno=dept.deptno
GROUP BY
loc) x
WHERE
sal between x.min_sal_med and x.max_sal_med;
 
4.
Numele angajatului, salariul şi comisionul pentru cei ce au salariul şi comisionul identicecu ale vreunui angajat din departamentul cu cel mai mare număr de angajaţi.
 
SELECT
ename, sal, comm, deptno
FROM
emp
WHERE
(sal,comm) IN (
SELECT
sal,comm
FROM
emp
WHERE
deptno = (
SELECT
deptno
FROM
emp
GROUP BY
deptno
HAVING
count(ename)=(
SELECT
max(count (ename))
FROM
emp
GROUP BY
deptno))); 
Subiectul 3
1.
Situaţia : Numele şefului Salariul minim subordonaţi Numele subordonatului cu salarminim
 
SELECT
a.ename NUME_SEF, x.sal_min SAL_MIN_Subordonati,b.ename NUME_ANG_CU_SAL_MIN
FROM
emp a,emp b, (
SELECT
min(sal)sal_min, mgr 
FROM
emp
GROUP BY
mgr )x
WHERE
exists(
SELECT
*
FROM
emp b
WHERE
(a.empno=b.mgr)) and (x.mgr=a.empno) and (b.ename in(
SELECT
ename
FROM
emp c
WHERE
x.sal_min=c.sal ));2.
Numele angajaţilor de pe nivelul 3 al ierarhiei organizaţiei
.
SELECT
ename
FROM
emp a
WHERE
a.mgr in(
SELECT
empno
FROM
emp b
WHERE
 b.mgr in (
SELECT
empno
FROM
emp c
WHERE
c.ename = 'KING'));3.
Numele angajaţilor care au aceeaşi meserie şi lucrează în aceiaşi localitate cu cei ce auaceiaşi grupă salarială cu şeful lor direct.
 
SELECT
ename
FROM
emp a, dept e
WHERE
(a.deptno=e.deptno) and (job, loc) in(
SELECT
job,d.loc
FROM
emp b, dept d, salgrade s
WHERE
b.deptno=d.deptno and sal betweens.hisal and s.losal and grade =(
SELECT
grade
FROM
salgrade t, emp c
WHERE
b.mgr=c.empno and c.sal between t.losal andt.hisal));4.
Numele angajatului, salariul, grupa salarială în care se află salariul, salariul majorat cu20%, grupa salarială în care se află salariul majorat, pentru cei care prin majorareasalariului ajung în grupa salarială imediat următoare aceleia în care au fost iniţial.
 
SELECT
ename NUME, sal SALARIUL, s.grade GRUPA_SALARIALA, 1.2*sal SAL_MAJORAT, b.grade GRUPA_SAL_MAJ
FROM
emp a, salgrade s, salgrade b
WHERE
sal between s.losal ands.hisal AND b.grade = (
SELECT
grade
FROM
salgrade c
WHERE
1.2*a.sal between c.losal ANDc.hisal ) AND s.grade!=b.grade; 
Subiectul 4
1.
Numărul angajaţilor care nu sunt şefi.
 
SELECT
count(ename)
FROM
emp a
WHERE
not exists (
SELECT
*
FROM
emp b
WHERE
a.empno=b.mgr);2.Situia:
Nume angajat Colegi_S1_81 Colegi_S2_81 Colegi_S1_82 Colegi_S2_82
 
Colegi_S1_83 Colegi_S2_83 Total_colegi
unde în linia afişaţă pentru fiecare angajat seafează numele acestuia, numărul de colegi încadri în semestrul şi respectiv anulcorespunzător fiecăreia dintre coloanele anterioare, precum şi numărul total de colegi.
SELECT
ename nume,(
SELECT
count(*)
FROM
emp c
WHERE
to_char(c.hiredate,'yyyy')=1981 ANDto_char(c.hiredate,'ddd')<182 AND c.empno<>a.empno) colegi_s1_81,(
SELECT
count(*)
FROM
emp c
WHERE
to_char(c.hiredate,'yyyy')=1981 ANDto_char(c.hiredate,'ddd')>=182 AND c.empno<>a.empno) colegi_s2_81,(
SELECT
count(*)
FROM
emp c
WHERE
to_char(c.hiredate,'yyyy')=1982 ANDto_char(c.hiredate,'ddd')<182 AND c.empno<>a.empno) colegi_s1_82,(
SELECT
count(*)
FROM
emp c
WHERE
to_char(c.hiredate,'yyyy')=1982 ANDto_char(c.hiredate,'ddd')>=182 AND c.empno<>a.empno) colegi_s2_82,(
SELECT
count(*)
FROM
emp c
WHERE
to_char(c.hiredate,'yyyy')=1983 ANDto_char(c.hiredate,'ddd')<182 AND c.empno<>a.empno) colegi_s1_83,(
SELECT
count(*)
FROM
emp c
where
to_char(c.hiredate,'yyyy')=1983 ANDto_char(c.hiredate,'ddd')>=182 AND c.empno<>a.empno) colegi_s2_83,(
SELECT
count(*)
FROM
emp)"Total_colegi"
FROM
emp a
ORDER BY
hiredate;3.
Numele lunii, numărul angajaţilor încadraţi în luna respectivă şi numele angajatului încadrat în luna reapectivă care are cea mai mică vechime.
 
SELECT
to_char(a.hiredate,'mon') NUME_LUNA, x.nr,y.ename
FROM
emp a,(
SELECT
to_char(hiredate,'mon') data,count(*) nr 
FROM
emp b
GROUP BY
to_char(hiredate,'mon'))x,(
SELECT
to_char(hiredate,'mon') dat, ename, max(hiredate)
FROM
emp d
GROUP BY
to_char(hiredate,'mon'),ename
HAVING
max(hiredate) IN(
SELECT
max(hiredate)
FROM
emp
GROUP
BY to_char(hiredate,'mon')))y
WHERE
to_char(a.hiredate,'mon')= x.data AND to_char(a.hiredate,'mon')=y.dat AND y.dat=x.data
GROUP BY
to_char(a.hiredate,'mon'), x.nr,y.ename;4.
Maximul salariilor medii ale localitaţilor.
 
SELECT
max(avg(sal))
FROM
emp a, dept
WHERE
a.deptno=dept.DEPTNO
GROUP BY
loc; 
Subiectul 5
1.
Numărul angajaţilor de pe nivelul 2 al organizaţiei.
 
SELECT
ename
FROM
emp a
WHERE
a.mgr=(
SELECT
empno
FROM
emp
WHERE
ename='KING');2.
Situaţia : Nume angajat Salar Comision Nume dep Comision_mediu_dep LocComision_mediu_loc Grupă_salarială Comision_mediu_grupă în care în coloaneleaferente comisionului afişat sau calculat unde nu există o valoare se afişează « Nu s-anegociat ».
 
SELECT
ename NUME_ANGAJAT, sal SALAR, DECODE(comm,null,'NU_S-

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->