|
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
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