Sunteți pe pagina 1din 3

Recapitulare Baze de Date – Limbajul SQL

Se da baza de date :

Se cere sa se rezolve urmatoarele cerinte cu ajutorul limbajului SQL:

1. Sa se afiseze lista furnizorilor din provincie in ordine invers alfabetica.


SELECT CodFurnizor, Denumire, Localitate
FROM Furnizori
WHERE Localitate<>"Bucuresti"
ORDER BY Denumire DESC;

2. Sa se afiseze nr. de furnizori din fiecare localitate.


SELECT Count(*) AS NrFurnizori, Localitate
FROM Furnizori
GROUP BY Localitate;

3. Sa se afiseze furnizorii al caror nume incepe cu litera A


SELECT CodFurnizor, Denumire
FROM Furnizori
WHERE Denumire Like "A*";

4. Sa se afiseze produsele masurate in "KG", cu pret cuprins intre 2000 si 20000


SELECT *
FROM Produse
WHERE UM="KG" AND Pret Between 2000 And 20000;

5. Sa se afizeze contractele din luna curenta


SELECT *
FROM Contracte
WHERE Month([DataContract])=Month(Date()) And
Year([DataContract])=Year(Date());

6. Sa se afiseze contractele din ultimele 10 zile.


SELECT *
FROM Contracte
WHERE DataContract Between Date()-10 And Date();
7. Sa se afiseze contractele din anul 2007 incheiate cu furnizori din Bucuresti.
SELECT NrContract, DataContract, Denumire
FROM Furnizori INNER JOIN Contracte ON
Furnizori.CodFurnizor=Contracte.CodFurnizor
WHERE Year([DataContract])=2007 And Localitate="Bucuresti";
Varianta fara INNER JOIN:
SELECT NrContract, DataContract, Denumire
FROM Furnizori, Contracte
WHERE Furnizori.CodFurnizor=Contracte.CodFurnizor and
Year([DataContract])=2007 And Localitate="Bucuresti";

8. Sa se afiseze nr. de contracte incheiate pe fiecare furnizor


SELECT Count(*) AS Nr_Contracte, Denumire
FROM Furnizori, Contracte
WHERE Furnizori.CodFurnizor=Contracte.CodFurnizor
GROUP BY Denumire;

9. Sa se afiseze val. fiecarui contract din ultimele 2 saptamini


SELECT Contracte.NrContract, DataContract, Cantitate*Pret AS Valoare
FROM Contracte, ContractProdus, Produse
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And DataContract
Between Date()-14 And Date();

10. Sa se afiseze val totala a contractelor incheiate pt un anumit produs solicitat


in momentul executiei interogarii!
SELECT Produse.DenProdus, Sum(Cantitate*Pret) AS ValoareTotala
FROM Contracte, ContractProdus, Produse
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And
Produse.DenProdus=[Tastati Produsul dorit]
GROUP BY Produse.DenProdus;

11. Sa se afiseze valoarea medie a contractelor pe fiecare furnizor


SELECT Furnizori.Denumire, AVG(Cantitate*Pret) AS ValoareMedie
FROM Contracte, ContractProdus, Produse, Furnizori
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And
Furnizori.CodFurnizor=Contracte.CodFurnizor
GROUP BY Furnizori.Denumire;

12. Sa se afiseze lista furnizorilor la care val. totala a contractelor este mai mare
de 100000
SELECT Furnizori.Denumire, Sum(Cantitate*Pret) AS ValoareMedie
FROM Contracte, ContractProdus, Produse, Furnizori
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And
Furnizori.CodFurnizor=Contracte.CodFurnizor
GROUP BY Furnizori.Denumire
HAVING Sum(Cantitate*Pret)>100000;
13. Sa se afiseze lista furnizorilor la care valoarea totala a contractelor depaseste
valoarea totala a contractelor incheiate de un anumit furnizor (parametrizat)
(interogare cu subinterogare)
SELECT Furnizori.Denumire, Sum(Cantitate*Pret) AS ValoareMedie
FROM Contracte, ContractProdus, Produse, Furnizori
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And
Furnizori.CodFurnizor=Contracte.CodFurnizor
GROUP BY Furnizori.Denumire
HAVING Sum(Cantitate*Pret) >
(SELECT Sum(Cantitate*Pret)
FROM Contracte, ContractProdus, Produse, Furnizori
WHERE Contracte.NrContract=ContractProdus.NrContract And
ContractProdus.CodProdus=Produse.CodProdus And
Furnizori.CodFurnizor=Contracte.CodFurnizor And
Furnizori.Denumire=[Tastati furnizorul dorit]);

S-ar putea să vă placă și