TEMA
TEMA
2.SELECT
id_functie,
MIN(salariul) AS salariu_minim,
AVG(salariul) AS salariu_mediu,
MAX(salariul) AS salariu_maxim
FROM angajati
GROUP BY id_functie;
3.SELECT
id_functie,
MIN(salariul) AS salariu_minim,
AVG(salariul) AS salariu_mediu,
MAX(salariul) AS salariu_maxim,
COUNT(*) AS numar_angajati
FROM angajati
GROUP BY id_functie;
4.SELECT id_departament,
COUNT(*) AS numar_angajati_departament
FROM angajati
GROUP BY id_departament;
5.SELECT
denumire_departament,
COUNT(*) AS numar_angajati
FROM angajati, departamente
WHERE denumire_departament IN ('Purchasing', 'Shipping', 'IT')
GROUP BY denumire_departament;
7.SELECT
id_departament,
COUNT(*) AS numar_angajati,
SUM(salariul) AS suma_totala_plata_salarii
FROM angajati
GROUP BY id_departament
HAVING COUNT(*) > 5;
8.SELECT id_departament,
SUM(salariul) AS suma_totala_plata_salarii,
ROUND(AVG(salariul)) AS salariul_mediu
FROM angajati
GROUP BY id_departament
HAVING SUM(salariul)>20000;
9. SELECT
id_functie,
SUM(salariul * (1 + comision)) AS suma_totala_incasata
FROM angajati
GROUP BY id_functie
HAVING SUM(salariul * (1 + comision)) > 25000;
10.SELECT
id_departament,
id_functie,
MIN(salariul) AS salariu_minim,
AVG(salariul) AS salariu_mediu,
MAX(salariul) AS salariu_maxim,
COUNT(*) AS numar_total_angajati
FROM angajati
GROUP BY id_departament, id_functie;
11. SELECT
nume,
prenume,
salariul,
id_departament,
CASE
WHEN id_departament = 20 THEN salariul * 1.1
WHEN id_departament = 40 THEN salariul * 1.15
WHEN id_departament = 60 THEN salariul * 1.2
ELSE salariul
END AS salariu_actualizat
FROM angajati;
13. SELECT
nume,
salariul,
data_angajare,
CASE
WHEN data_angajare BETWEEN '01/01/2015' AND '01/01/2016' THEN salariul * 0.3
WHEN data_angajare BETWEEN '01/01/2017' AND '01/01/2018' THEN salariul * 0.2
WHEN data_angajare BETWEEN '01/01/2019' AND '01/01/2020' THEN salariul * 0.1
ELSE salariul * 0.05
END AS prima
FROM angajati;
UNION
UNION
UNION
15. SELECT
nume, salariul, COALESCE(comision, 0) AS valoare_comision
FROM angajati
MINUS
SELECT
nume, salariul, COALESCE(comision, 0) AS valoare_comision
FROM angajati
WHERE comision IS NULL;
3. SELECT
a.nume,
a.prenume,
0.1 AS DC
FROM angajati a
JOIN comenzi co ON a.id_angajat = co.id_angajat
WHERE co.stare_comanda=1
UNION
SELECT
a.nume,
a.prenume,
0.2 AS DC
FROM angajati a
JOIN comenzi co ON a.id_angajat = co.id_angajat
WHERE co.stare_comanda=2
UNION
SELECT
a.nume,
a.prenume,
0.3 AS DC
FROM angajati a
JOIN comenzi co ON a.id_angajat = co.id_angajat
WHERE co.stare_comanda=3
UNION
SELECT
a.nume,
a.prenume,
0 AS DC
FROM angajati a
JOIN comenzi co ON a.id_angajat = co.id_angajat
WHERE co.stare_comanda NOT IN (1, 2, 3);
4.
SELECT
p.denumire_produs,
SUM(c.cantitate * c.pret) AS valoare_totala,
COUNT(c.cantitate) AS nr_comenzi
FROM rand_comenzi c
JOIN produse p ON c.id_produs = p.id_produs
GROUP BY p.denumire_produs
HAVING COUNT(c.cantitate) >= 3
INTERSECT
SELECT
p.denumire_produs,
SUM(c.cantitate * c.pret) AS valoare_totala,
COUNT(c.cantitate) AS nr_comenzi
FROM rand_comenzi c
JOIN produse p ON c.id_produs = p.id_produs
GROUP BY p.denumire_produs
HAVING SUM(c.cantitate * c.pret) NOT IN (1440, 3916);