Sunteți pe pagina 1din 2

C:\Users\40744\Desktop\SQLQuery1.

sql 1
--T21) Realizați o procedură stocată pentru a determina valoarea comenzilor în
--Euro pe fiecare marcă de telefoane între două date calendaristice precizate
--ca parametri. Cursul Euro va fi precizat ca parametru.

--Create proc ValoareaComenzilorMarcaTelefoane


--@curs as decimal(3,2),
--@data1 as date,
--@data2 as date
--AS
--Select Marca, Sum(PretUnitar*Cantitate)/@curs as TotalEuro
--From Produse P inner join PRODUSE_COMANDATE PC ON
--P.IdProdus=PC.IdProdus inner join Comenzi C ON PC.NrComanda=C.NrComanda
--Where DataComanda between @data1 and @data2
--Group by Marca

--exec ValoareaComenzilorMarcaTelefoane 4.75,'1/1/2017','10/01/2019'

--T22) Realizați o procedură stocată pentru determina care sunt cele mai vândute
--3 modele de telefoane într-o anumită localitate, în ultimele N luni.
--Numărul de luni și localitatea vor fi parametri ai procedurii.

--Create proc CeleMaiVanduteTelefoane


--@nrluni as int,
--@oras as nvarchar(50)
--AS
--Select TOP 3 Denumire, Localitate, Sum(Cantitate) AS TotalVânzări
--From Produse P inner join PRODUSE_COMANDATE PC ON P.IdProdus=PC.IdProdus
--inner join COMENZI C ON PC.NrComanda=C.NrComanda
--inner join CLIENTI CL ON C.CNP=CL.CNP
--Where localitate=@oras and DataComanda>DATEADD(month,-@nrluni,DataComanda)
--Group by Denumire, Localitate
--Order by TotalVânzări desc

--exec CeleMaiVanduteTelefoane 3, 'Ploiesti'

----T23 Realizați o funcție ce va primi ca argument CNP-ul unui client pentru a calcula un Discount
----ce se va aplica la următoareacomandă a clientului astfel:
--- Toți Clienții din loalitatea Otopeni vor primi discount 7%
--- Ceilalți clienți vor primi discount în funcție de valoarea totală a comenzilor realizate astfel
--- Dacă valoarea este sub 2000 lei   discount 1 %
--- Dacă valoare este cuprinsă între 1000 și 4000 -  discount 3%
--- Dacă valoarea depășește 4000   discount 5%
--Exemplificați utilizarea funcției într-o procedură stocată ce va afișa discount-ul pentru
--clienții din județele IF, PH și BV

--Create function DiscountClient ( @CNP as char(13))


--returns money
--AS
--begin
--declare @oras as nvarchar(50)
--declare @valoare as money
--Set @oras=( Select Localitate
-- From Clienti
-- Where CNP=@CNP)
--Set @Valoare=( Select Sum(Cantitate*PretUnitar)
-- From ProduseComandate PC inner join Comenzi C ON PC.NrComanda=C.NrComanda
-- Where CNP=@CNP)
--return case
--when @oras='Otopeni' then 0.07
--when @valoare<2000 then 0.01
--when @valoare between 1000 and 4000 then 0.03
--else 0.05

--end
--end

----T24 Realizați o funcție ce va primi ca argument o marcă de telefoane și va returna lista


--Clienților (CNP, Nume, Localitate) care au comandat mai mult de N produse din marca respectivă
--(N va fi parametru).
--Exemplificați utilizarea funcției într-o procedură stocată pentru a afișa care este ultima dată de
livrare pentru fiecare
C:\Users\40744\Desktop\SQLQuery1.sql 2
--dintre clienții care au comandat mai mult de un telefoane Samsung

--Create function ListaClientilorComenzi(@MARCA Nvarchar(50), @n as int)


--returns @tabel table (CNP CHAR(13), Nume nvarchar(50), Prenume nvarchar(50), Localitate nvarchar(50))
--AS
--BEGIN
--INSERT INTO @TABEL
--SELECT CLIENTI.CNP, NUME, PRENUME, LOCALITATE
--FROM CLIENTI INNER JOIN COMENZI ON CLIENTI.CNP=COMENZI.CNP INNER JOIN PRODUSE_COMANDATE
--ON COMENZI.NrComanda=PRODUSE_COMANDATE.NrComanda INNER JOIN PRODUSE
--ON PRODUSE_COMANDATE.IdProdus=PRODUSE.IdProdus
--WHERE Marca=@MARCA
--GROUP BY CLIENTI.CNP, NUME, PRENUME, LOCALITATE
--HAVING SUM(CANTITATE)>@n
--return
--end

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