Advertisement
Azz_142

Vjezbe 5 Ekipno

Apr 19th, 2018
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 5.78 KB | None | 0 0
  1. use AdventureWorks2014
  2. go
  3.  
  4. --1. Kreirati upit koji prikazuje kreditne kartice kojima je plaćeno više od 20 narudžbi. U listu uključiti ime i prezime vlasnika kartice, tip kartice, broj kartice, ukupan iznos plaćen karticom.
  5.  
  6.  
  7. select P.FirstName+' '+P.LastName, COUNT(SOH.CreditCardID), CC.CardNumber,CC.CardType,SUM(SOH.TotalDue)
  8. from Person.Person as P join Sales.PersonCreditCard as PCC on P.BusinessEntityID=PCC.BusinessEntityID
  9.                         join Sales.CreditCard as CC on CC.CreditCardID=PCC.CreditCardID
  10.                         join Sales.SalesOrderHeader as SOH on SOH.CreditCardID=CC.CreditCardID
  11.  
  12. group by P.FirstName,P.LastName,CC.CardNumber,CC.CardType
  13. having COUNT(SOH.CreditCardID) > 20
  14.  
  15.  
  16.  
  17. --2. Kreirati upit koji prikazuje kupce koji su u maju mjesecu 2014. godine naručili proizvod „Front Brakes“ u količini većoj od 5 komada.
  18.  
  19.  
  20. select C.CustomerID , SOH.OrderDate , PP.Name , SOD.OrderQty
  21. from Sales.Customer as C join Sales.SalesOrderHeader as SOH on SOH.CustomerID=C.CustomerID
  22.                         join Sales.SalesOrderDetail as SOD on SOH.SalesOrderID=SOD.SalesOrderID
  23.                         join Production.Product as PP ON PP.ProductID = SOD.ProductID
  24.  
  25. where MONTH(SOH.OrderDate)=5 AND YEAR(SOH.OrderDate)=2014 and PP.Name='Front Brakes' and SOD.OrderQty>5
  26.  
  27.  
  28.  
  29. --3. Kreirati upit koji prikazuje kupce koji su u 7. mjesecu utrošili više od 200.000 KM. U listu uključiti ime i prezime kupca te ukupni utrošak. Izlaz sortirati prema utrošku opadajućim redoslijedom.
  30.  
  31. select C.CustomerID , P.FirstName+ ' '+P.LastName, SUM(SOH.TotalDue)
  32. from Sales.Customer as C join Person.Person as P on P.BusinessEntityID=C.PersonID
  33.                         join Sales.SalesOrderHeader AS SOH on SOH.CustomerID=C.CustomerID
  34. where MONTH(SOH.OrderDate)=7
  35. group by     C.CustomerID , P.FirstName,P.LastName             
  36. having SUM(SOH.TotalDue)>200000
  37. order by SUM(SOH.TotalDue) desc
  38.  
  39.  
  40.  
  41. --4. Kreirati upit koji prikazuje zaposlenike koji su uradili više od 200 narudžbi. U listu uključiti ime i prezime zaposlenika te ukupan broj urađenih narudžbi. Izlaz sortirati prema broju narudžbi opadajućim redoslijedom
  42.  
  43. select P.FirstName+ ' ' + P.LastName , COUNT(SOH.SalesPersonID)
  44. from HumanResources.Employee as E join Person.Person as P on P.BusinessEntityID=E.BusinessEntityID
  45.                                     join Sales.SalesOrderHeader as SOH on P.BusinessEntityID=SOH.SalesPersonID
  46. group by P.FirstName,P.LastName
  47. having COUNT(SOH.SalesPersonID)>200
  48. order by COUNT(SOH.SalesPersonID) desc
  49.  
  50.  
  51.  
  52.  
  53. --5. Kreirati upit koji prikazuje proizvode kojih na skladištu ima u količini manjoj od 30 komada. Lista treba da sadrži naziv proizvoda, naziv skladišta (lokaciju), stanje na skladištu i ukupnu prodanu količinu. U rezultate upita uključiti i one proizvode koji nikad nisu prodavani. Ukoliko je ukupna prodana količina prikazana kao NULL vrijednost, izlaz formatirati brojem 0.
  54.  
  55.  
  56. select PP.Name,L.Name, SUM(PPI.Quantity),ISNULL(SUM(SOD.OrderQty),'0')
  57. from Production.Product as PP join Production.ProductInventory as PPI on PPI.ProductID=PP.ProductID
  58.                             join Production.Location as L on L.LocationID=PPI.LocationID
  59.                             left outer join Sales.SalesOrderDetail as SOD on SOD.ProductID=PP.ProductID
  60. group by PP.Name,L.Name
  61. having SUM(PPI.Quantity) < 30
  62.  
  63.  
  64.  
  65. /*6. Kreirati upit koji prikazuje podatke o zaposlenicima. Lista treba da sadrži sljedeće kolone: ime i prezime zaposlenika (spojeno),
  66.  korisničko ime, novu lozinku, starost i staž zaposlenika. Uslovi su sljedeći:
  67. ? Za korisničko ime potrebno je koristiti kolonu LoginID (tabela Employees). Npr. LoginID zaposlenika sa imenom
  68.  i prezimenom 'Mary Gibson' je adventure-works\mary0. Korisničko ime zaposlenika je sve
  69.  što se nalazi iza znaka \ (backslash) što je u ovom primjeru mary0,
  70. ? Nova lozinka se formira koristeći hešovanu lozinku zaposlenika na sljedeći način:
  71. o Hešovanu lozinku potrebno je okrenuti obrnuto (npr. dbms2015 -> 5102smbd)
  72. o Nakon toga preskačemo prvih 5 i uzimamo narednih 8 karaktera
  73. o Sljedeći korak jeste da iz dobivenog stringa počevši od drugog karaktera naredna dva zamijenimo
  74. sa X# (npr. ako je dobiveni string dbms2015 izlaz će biti dX#s2015)
  75. ? Starost i staž se formiraju na osnovu kolona BirthDate i HireDate
  76. Prikazati podatke samo za zaposlenike ženskog spola koji imaju više od 50 godina i više od 5 godina staža */
  77.  
  78.  
  79.  
  80. select P.FirstName+ ' ' +P.LastName as 'Ime i prezime',SUBSTRING(LoginID,CHARINDEX('\',LoginID)+1,100)  as 'Korisnicko ime',
  81.  STUFF(SUBSTRING(REVERSE(PP.PasswordHash),6,8),2,2,'X#') as 'Sifra najgora na svijetu',
  82.  DATEDIFF(YEAR,E.BirthDate,GETDATE()) as 'Starost' ,
  83.   DATEDIFF(YEAR,E.HireDate,GETDATE()) as 'Staz' ,
  84.   E.Gender
  85. from HumanResources.Employee as E join Person.Person as P on P.BusinessEntityID=E.BusinessEntityID 
  86.                                     join Person.[Password] as PP on PP.BusinessEntityID=P.BusinessEntityID
  87. where DATEDIFF(YEAR,E.BirthDate,GETDATE()) > 50 AND
  88.   DATEDIFF(YEAR,E.HireDate,GETDATE()) >5
  89.   AND E.Gender='F'
  90.  
  91.  
  92.  
  93.   --7. Prikazati ukupnu količinu prodaje i ukupnu zaradu od prodaje svakog pojedinog proizvoda po teritoriji. Uzeti u obzir samo prodaju u sklopu ponude pod nazivom “Volume Discount 11 to 14” i to samo gdje je količina prodaje veća od 100 komada. Zaradu zaokružiti na dvije decimale, te izlaz sortirati po zaradi u opadajućem redoslijedu.
  94.  
  95. select P.Name, ST.Name, SUM(SOD.OrderQty),ROUND(SUM(SOD.OrderQty*SOD.UnitPrice-SOD.OrderQty*SOD.UnitPrice*SOD.UnitPriceDiscount),2) as Zarada
  96. from Production.Product as P join Sales.SalesOrderDetail as SOD on SOD.ProductID=P.ProductID
  97.                             join Sales.SalesOrderHeader as SOH on SOD.SalesOrderID=SOH.SalesOrderID
  98.                             join Sales.SalesTerritory as ST ON ST.TerritoryID=SOH.TerritoryID
  99.                             join  Sales.SpecialOffer as SO on SO.SpecialOfferID=SOD.SpecialOfferID
  100. where SO.[Description]='Volume Discount 11 to 14'
  101. group by P.Name,ST.Name
  102. having SUM(SOD.OrderQty)>100
  103. order by Zarada desc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement