0% found this document useful (0 votes)
9 views8 pages

Exercitii Recapitulative

The document contains examples of SQL queries using aggregation functions like SUM, COUNT, MIN, MAX, and AVG to retrieve summarized data from various tables. It also includes examples of conditional logic using CASE statements and set operators like UNION, INTERSECT, and MINUS to combine results from multiple queries.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views8 pages

Exercitii Recapitulative

The document contains examples of SQL queries using aggregation functions like SUM, COUNT, MIN, MAX, and AVG to retrieve summarized data from various tables. It also includes examples of conditional logic using CASE statements and set operators like UNION, INTERSECT, and MINUS to combine results from multiple queries.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Exercitii recapitulative:

1. SELECT id_departament, SUM(salariul) AS total_salarii

FROM angajati

GROUP BY id_departament

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;

6.SELECT COUNT(*) AS numar_salariati

FROM angajati

WHERE data_angajare < '08/15/2019';

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;

12. SELECT nume, prenume,id_functie, salariul,

CASE

WHEN id_functie IN('SA_REP', 'SA_MAN') THEN salariul * (1+comision)


WHEN id_functie IN('IT') THEN salariul * 1.2

ELSE salariul

END AS suma_de_incasat

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;

14. SELECT nume, salariul, data_angajare, salariul * 0.3 AS prima

FROM angajati

WHERE data_angajare BETWEEN '01/01/2015' AND '01/01/2016'

UNION

SELECT nume, salariul, data_angajare, salariul * 0.2 AS prima

FROM angajati

WHERE data_angajare BETWEEN '01/01/2017' AND '01/01/2018'

UNION
SELECT nume, salariul, data_angajare, salariul * 0.1 AS prima

FROM angajati

WHERE data_angajare BETWEEN '01/01/2019' AND '01/01/2020'

UNION

SELECT nume, salariul, data_angajare, salariul * 0.05 AS prima

FROM angajati

WHERE data_angajare NOT BETWEEN '01/01/2015' AND '01/01/2020';

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;

Exercitiile din seminarul "Union/Intersect/Minus":

2. SELECT

c.nume_client,

c.prenume_client,

CASE

WHEN co.Stare_comanda = 1 THEN 0.1

WHEN co.Stare_comanda = 2 THEN 0.15

WHEN co.Stare_comanda > 3 THEN 0.2

ELSE 0
END AS DC

FROM clienti c

JOIN comenzi co ON c.id_client = co.id_client

WHERE c.nume_client NOT LIKE 'M%'

MINUS

SELECT

c.nume_client,

c.prenume_client,

0 AS DC

FROM clienti c

WHERE c.nume_client LIKE 'M%'

ORDER BY nume_client DESC;

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

You might also like