Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

Sa se scrie o cerere sql care face o lista cu departamentul in care s-au facut cele

mai multe angajari intr-un singur an. Lista va contine


denumirea departamentului, anul cu cele mai multe angajari si nr de angajari.
Pentru rezolvare folositi emp si dept.

select d.dname DEN_DEP, o.AN AN, o.NR_ANG NR_ANG


from( select AN, NR_ANG, depart
from (select AN, count(AN) NR_ANG, depart
from
(select e.ename,
extract(year from e.hiredate) AN, e.deptno depart
from emp e, dept d
where e.deptno = d.deptno)
group by depart, AN
order by count(AN) desc)
where rownum = 1) o inner join dept d on d.deptno =
o.depart;

-------------1--------------------------

SELECT MAX(COUNT(e.deptno))
FROM emp e
GROUP by e.deptno, EXTRACT(YEAR FROM e.hiredate);

------ 2 -----------
Departamentul cu cele mai multe angajari dintr-un an
Ma folosesc de subcererea anterioara pentru a gasi departament cu cele mai multe
angajari dintr-un an

SELECT emp1.deptno
FROM emp emp1
GROUP by emp1.deptno, extract(YEAR from emp1.hiredate)
HAVING count(*) = (
SELECT MAX(count(emp3.deptno))
FROM emp emp3
GROUP by emp3.deptno, extract(YEAR FROM emp3.hiredate));

=> departamentul cu numarul 30 are cele mai multe angajari

Pasul 3
CERERE FINALA

SELECT distinct d.dname denumire_departament, extract(YEAR from a.hiredate)


an_angajari,
(
SELECT MAX(count(e.deptno))
FROM emp e
GROUP by e.deptno, extract(YEAR from e.hiredate)) NR_ANG
FROM dept d
JOIN emp a on d.deptno=a.deptno
WHERE d.deptno =
(SELECT e2.deptno
FROM emp e2
GROUP by e2.deptno, extract(YEAR from e2.hiredate)
having count(*)= (
select max(count(e3.deptno))
from emp e3
group by e3.deptno, extract(YEAR from e3.hiredate)));

You might also like