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;
Sa se afizeze contractele din luna curenta
SELECT *
FROM Contracte
WHERE Month([DataContract])=Month(Date()) And Year([DataContract])=Year(Date(
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();
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;
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;
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;
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]);
|