Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Functii de grup si subinterogari - laborator

Functii de grup si subinterogari


1.Afisati salariul maxim pe fiecare tip de functie in ordinea descrescǎtoare a salariilor.

SELECT functie, MAX(salariu) FROM personal GROUP BY functie ORDER BY MAX(salariu) DESC


2.Afisati totalul salariilor pe facultati pentru fiecare tip de functie.

SELECT id_facultate,functie, SUM(salariu) FROM personal GROUP BY id_facultate,functie ORDER BY id_facultate,functie


3.Afisati, in ordine descrescǎtoare dupǎ salariu, angajatii care castiga cel mai mare salariu pentru fiecare tip de functie.

SELECT 



nume, functie, MAX(salariu) FROM personal

GROUP BY functie ORDER BY personal.salariu DESC


Comparati cu interogarea urmatoare:


SELECT nume, functie, salariu

FROM personal

WHERE salariu IN (SELECT MAX(salariu) FROM personal

GROUP BY functie)

ORDER BY salariu DESC

Obsevati diferenta! In prima interogare sunt afisati angajatii care au salariu maxim al functiei, iar in a doua interogare angajatii cu salarii egale cu salariile maxime pe functii.


4.Afisati salariul mediu anual pe fiecare tip de functie in ordinea crescǎtoare a salariilor.

SELECT functie, AVG(salariu*(1+NZ(spor,0))*12)

FROM personal

GROUP BY functie

ORDER BY  AVG(salariu*(1+NZ(spor,0))*12)



5.Afisati angajatii cu salariul mai mare decat salariile medii pe fiecare tip de functie.

SELECT nume,functie,salariu FROM personal WHERE salariu > ANY (SELECT AVG(salariu) FROM personal GROUP BY functie) ORDER BY  salariu


6.Afisati cei mai recenti angajati din fiecare facultate. Ordonati dupa data angajarii.

SELECT nume, id_facultate, data_angajare

FROM personal

WHERE data_angajare IN (SELECT MAX(data_angajare)

FROM personal

GROUP BY id_facultate)

ORDER BY data_angajare;


7.Afisati angajatii cu salariul mai mare decat salariul mediu pe functia respectiva.

SELECT nume, salariu, id_facultate

FROM personal AS p

WHERE salariu > (SELECT AVG(salariu) FROM personal WHERE functie = p.functie) ORDER BY functie;

8.Listati, folosind o subinterogare, toate facultǎtile care nu au angajati.

SELECT id_facultate, nume_facultate

FROM facultati AS f

WHERE NOT EXISTS (SELECT 1

FROM personal

WHERE id_facultate = f.id_facultate);



9.Afisati numarul de angajati ai fiecarei facultati.

SELECT id_facultate,COUNT(*) FROM personal GROUP BY id_facultate


10.Afisati numele si salariul primilor trei angajati, in functie de salariul cistigat.

SELECT nume, salariu FROM personal p

WHERE 3 > (SELECT COUNT(*)

FROM personal WHERE p.salariu < salariu);



11.Afisati totalul salariilor pe fiecare functie pentru facultatea de "Stiinte Economice".

SELECT functie, SUM(salariu) FROM personal GROUP BY id_facultate,functie HAVING id_facultate = (SELECT id_facultate FROM facultati WHERE UCASE(TRIM(nume_facultate))='STIINTE ECONOMICE') ORDER BY id_facultate,functie



12.Afisati totalul taxelor pe fiecare facultate.

SELECT f.nume_facultate, sp.nume_spec,SUM(s.valoareTaxa) FROM studenti as s, specializari AS sp, facultati AS f WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate GROUP BY  f.nume_facultate, sp.nume_spec



13.Afisati facultatea cu totalul cel mai mare al taxelor.

SELECT t.nume_facultate, MAX(totaltaxa)

FROM (SELECT f.nume_facultate, sp.nume_spec,SUM(s.valoareTaxa) AS  totalTaxa

FROM studenti as s, specializari AS sp, facultati AS f

WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate

GROUP BY  f.nume_facultate, sp.nume_spec) AS t

GROUP BY t.nume_facultate


14.Afisati numarul de studenti ai fiecarei facultati.

SELECT f.nume_facultate,COUNT(s.id_student)

FROM studenti as s, specializari AS sp, facultati AS f

WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate

GROUP BY  f.nume_facultate


15.Afisati numarul de studenti fara taxa pe fiecare specializare.

SELECT f.nume_facultate,COUNT(s.id_student)

FROM studenti as s, specializari AS

sp, facultati AS f

WHERE s.id_spec=sp.id_spec AND sp.id_facultate=f.id_facultate AND s.valoaretaxa IS NULL

GROUP BY  f.nume_facultate