Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

SEMINAR 9

1) SELECT

Comenzi.*,

CASE

WHEN Regiune = 'Europe' THEN ValoareTotala * 0.10

ELSE 0

END AS Discount

FROM

Comenzi;

2) SELECT

Comenzi.*,

CASE

WHEN Regiune = 'America' THEN ValoareTotala * 0.15

ELSE 0

END AS Discount

FROM

Comenzi;

3) SELECT

Comenzi.*,

CASE

WHEN Regiune = 'Asia' THEN ValoareTotala * 0.12

ELSE 0

END AS Discount

FROM

Comenzi;

4) SELECT

Comenzi.*,
CASE

WHEN Regiune = ('Orientul Mijlociu', 'Africa') THEN ValoareTotala * 0.18

ELSE 0

END AS Discount

FROM

Comenzi;

SEMINAR 10

Set1

1) SELECT nr_comanda ,data,

SUM(cantitate * pret) AS valoare_comanda FROM Comenzi

WHERE EXTRACT(YEAR FROM data) = 1999

GROUP BY nr_comanda, data HAVING SUM(cantitate * pret) > 2000

ORDER BY data;

2) SELECT nr_comanda, data,

SUM(cantitate * pret) AS valoare_totala,

CASE

WHEN SUM(cantitate * pret) <= 1000 THEN 100

WHEN SUM(cantitate * pret) > 1000 AND SUM(cantitate * pret) <= 2000 THEN 200

ELSE 300

END AS cheltuieli_transport

FROM NumeleTabeluluiComenzi

GROUP BY nr_comanda, data

ORDER BY data;

3) SELECT id_client, id_produs,

SUM(cantitate) AS cantitate_totala FROM Vanzari

GROUP BY id_client, id_produs;

4) SELECT id.nume, Id.departament, id.nivel_ierarhic

FROM Angajati

JOIN Angajati
WHERE

id.nume = 'Russell' AND nivel_ierarhic > .nivel_ierarhic;

5) SELECT A1.nume, A1.functie, A1.nivel_ierarhic, A1.departament

FROM Angajati A1

WHERE A1.functie = (SELECT functie FROM Angajati WHERE nume = 'Rogers')

NOT EXISTS ( SELECT 1 FROM Angajati A2 WHERE A2.functie = A1.functie AND A2.nivel_ierarhic >
A1.nivel_ierarhic);

Set2

1) SELECT nume, salariu, data_angajarii, functie

FROM Angajati

WHERE (functie = 'Programmer' OR functie = 'Accountant') AND TO_CHAR (data_angajarii, 'YYYY')


BETWEEN '1995' AND '1998';

2)

SET pret = pret * 1.15

WHERE pret < (SELECT AVG(pret) FROM rand_comenzi WHERE denumire LIKE '%sound%');

3) SELECT nume, data_angajarii, functie, functii_detinute

FROM Angajati

WHERE id_departament IN (50, 80) AND TO_CHAR(data_angajarii, 'YYYY') BETWEEN '1995' AND '1999';

4)

SET pret = pret * 0.95

WHERE cantitate < (SELECT AVG(cantitate) FROM rand_comenzi WHERE denumire LIKE '%CPU%');

5) SELECT denumire, SUM(cantitate * pret) AS valoare_totala

FROM rand_comenzi

GROUP BY denumire HAVING SUM(cantitate * pret) BETWEEN 1500 AND 4000;

6) SELECT nr_comanda, data,

SUM(cantitate * pret) AS valoare_totala, COUNT(DISTINCT id_produs) AS numar_produse

FROM Comenzi

WHERE tip_comanda = 'online' AND TO_CHAR(data, 'YYYY') BETWEEN '1999' AND '2000'
GROUP BY nr_comanda, data HAVING COUNT(DISTINCT id_produs) >= 2;

Set3

1) SELECT nr_comanda, denumire_produs, pret, cantitate, cantitate * pret AS valoare

FROM Comenzi

WHERE LOWER(produs) LIKE '%monitor%';

2) SELECT nume, id_departament, COUNT(nr_comanda) AS numar_comenzi

FROM Angajati A

JOIN Comenzi ON id_angajat =id_angajat

WHERE id_departament = 80 AND TO_CHAR(C.data, 'MM') = '11'

GROUP BY nume, id_departament;

3) UPDATE rand_comenzi

SET pret = pret * 0.90

WHERE pret > (SELECT AVG(pret) FROM rand_comenzi WHERE id_produs = '3155');

4) SELECT A.nume, A.functie,

COUNT(C.nr_comanda) AS numar_comenzi

FROM Angajati A

JOIN Comenzi ON id_angajat = id_angajat

GROUP BY A.nume, A.functie

HAVING COUNT(C.nr_comanda) >= 2;

5) UPDATE rand_comenzi

SET pret = pret * 1.05

WHERE cantitate * pret >= 1000;

6) SELECT A.nume,

COUNT(C.nr_comanda) AS numar_comenzi, A.salariu,

CASE

WHEN COUNT(C.nr_comanda) BETWEEN 1 AND 2 THEN A.salariu * 0.05


WHEN COUNT(C.nr_comanda) BETWEEN 3 AND 5 THEN A.salariu * 0.07

ELSE A.salariu * 0.10

END AS bonus

FROM Angajati A

LEFT JOIN NumeleTabeluluiComenzi C ON A.id_angajat = C.id_angajat

GROUP BY A.nume, A.salariu;

You might also like