Advertisement
limun11

BPII - Vjezba 5

Apr 3rd, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.87 KB | None | 0 0
  1. /*1. Kreirati upit koji prikazuje kreditne kartice kojima je plaćeno više od 20 narudžbi.
  2. U listu uključiti ime i prezime vlasnika kartice, tip kartice, broj kartice, ukupan iznos plaćen karticom.*/
  3.  
  4. SELECT pp.FirstName + ' ' + pp.LastName AS [Ime i prezime],
  5.         scc.CardType AS [Tip kartice],
  6.         scc.CardNumber AS [Broj kartice],
  7.         SUM(ssoh.TotalDue) AS [Ukupan iznos]
  8. FROM Sales.Customer AS sc
  9. INNER JOIN Person.Person AS pp ON sc.PersonID=pp.BusinessEntityID
  10. INNER JOIN Sales.PersonCreditCard AS spcc ON pp.BusinessEntityID=spcc.BusinessEntityID
  11. INNER JOIN Sales.CreditCard AS scc ON spcc.CreditCardID=scc.CreditCardID
  12. INNER JOIN Sales.SalesOrderHeader AS ssoh ON scc.CreditCardID=ssoh.CreditCardID
  13. INNER JOIN Sales.SalesOrderDetail AS ssod ON ssoh.SalesOrderID=ssod.SalesOrderID
  14. GROUP BY pp.FirstName, pp.LastName, scc.CardType, scc.CardNumber
  15. HAVING SUM(ssod.OrderQty)>20
  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. SELECT pp.FirstName + ' ' +pp.LastName AS [Kupac], ppro.Name AS [Ime proizvoda], ssod.OrderQty AS [Kolicina],
  20.         CONVERT(varchar, ssoh.OrderDate, 104) [Datum narudzbe]
  21. FROM Person.Person AS pp
  22. INNER JOIN Sales.Customer AS sc ON pp.BusinessEntityID=sc.PersonID
  23. INNER JOIN Sales.SalesOrderHeader AS ssoh ON ssoh.CustomerID=sc.CustomerID
  24. INNER JOIN Sales.SalesOrderDetail AS ssod ON ssod.SalesOrderID=ssoh.SalesOrderID
  25. INNER JOIN Production.Product AS ppro ON ppro.ProductID=ssod.ProductID
  26. WHERE ppro.Name LIKE '%Front Brakes%' AND ssod.OrderQty>5 AND DATEPART(MONTH, ssoh.OrderDate)='5' AND DATEPART(YEAR, ssoh.OrderDate)='2014'
  27.  
  28.  
  29. /*3. Kreirati upit koji prikazuje kupce koji su u 7. mjesecu utrošili više od 200.000 KM.
  30. U listu uključiti ime i prezime kupca te ukupni utrošak. Izlaz sortirati prema utrošku opadajućim redoslijedom.*/
  31.  
  32. SELECT pp.FirstName + ' ' +pp.LastName AS [Ime i prezime kupca], SUM(soh.TotalDue) AS [Ukupni trosak]
  33. FROM Person.Person AS pp
  34. INNER JOIN Sales.Customer AS sc ON pp.BusinessEntityID=sc.PersonID
  35. INNER JOIN Sales.SalesOrderHeader AS soh ON soh.CustomerID =sc.CustomerID
  36. WHERE DATEPART(MONTH, soh.OrderDate)=7
  37. GROUP BY pp.FirstName, pp.LastName
  38. HAVING SUM(soh.TotalDue) > 200000
  39.  
  40. /*4. Kreirati upit koji prikazuje zaposlenike koji su uradili više od 200 narudžbi.
  41. U listu uključiti ime i prezime zaposlenika te ukupan broj urađenih narudžbi.
  42. Izlaz sortirati prema broju narudžbi opadajućim redoslijedom*/
  43.  
  44. SELECT pp.FirstName + ' ' +pp.LastName AS [Ime i prezime], SUM(ssod.OrderQty) AS [Broj narudzbi]
  45. FROM Person.Person AS pp
  46. INNER JOIN HumanResources.Employee AS hre ON pp.BusinessEntityID=hre.BusinessEntityID
  47. INNER JOIN Sales.SalesPerson AS ssp ON ssp.BusinessEntityID=hre.BusinessEntityID
  48. INNER JOIN Sales.SalesOrderHeader AS ssoh ON ssp.BusinessEntityID=ssoh.SalesPersonID
  49. INNER JOIN Sales.SalesOrderDetail AS ssod ON ssod.SalesOrderID=ssoh.SalesOrderID
  50. GROUP BY pp.FirstName, pp.LastName
  51. HAVING SUM(ssod.OrderQty) >200
  52. ORDER BY SUM(ssod.OrderQty) DESC
  53.  
  54. /*5. Kreirati upit koji prikazuje proizvode kojih na skladištu ima u količini manjoj od 30 komada.
  55. Lista treba da sadrži naziv proizvoda, naziv skladišta (lokaciju), stanje na skladištu i ukupnu prodanu količinu.
  56. U rezultate upita uključiti i one proizvode koji nikad nisu prodavani. Ukoliko je ukupna prodana količina
  57. prikazana kao NULL vrijednost, izlaz formatirati brojem 0.*/
  58.  
  59. SELECT pp.Name AS [Ime proizvoda], pl.Name AS [Naziv skladista (lokacija)], COUNT(ppod.StockedQty) AS [Kolicina na skladistu],
  60.         ISNULL(SUM(ppod.OrderQty),0) AS [Ukupna prodana kolicina]
  61. FROM Production.Product AS pp
  62. INNER JOIN Production.ProductInventory AS ppi ON pp.ProductID=ppi.ProductID
  63. INNER JOIN Production.Location AS pl ON ppi.LocationID=pl.LocationID
  64. INNER JOIN Purchasing.PurchaseOrderDetail AS ppod ON ppod.ProductID=pp.ProductID
  65. GROUP BY pp.Name, pl.Name
  66. HAVING COUNT(ppod.StockedQty)<30
  67.  
  68. /*6. Kreirati upit koji prikazuje podatke o zaposlenicima. Lista treba da sadrži sljedeće kolone:
  69. ime i prezime zaposlenika (spojeno), korisničko ime, novu lozinku, starost i staž zaposlenika. Uslovi su sljedeći:
  70.  
  71.  Za korisničko ime potrebno je koristiti kolonu LoginID (tabela Employees).
  72. Npr. LoginID zaposlenika sa imenom i prezimenom 'Mary Gibson' je adventure-works\mary0.
  73. Korisničko ime zaposlenika je sve što se nalazi iza znaka \ (backslash) što je u ovom primjeru mary0,
  74.  
  75.  Nova lozinka se formira koristeći hešovanu lozinku zaposlenika na sljedeći način:
  76. o Hešovanu lozinku potrebno je okrenuti obrnuto (npr. dbms2015 -> 5102smbd)
  77. o Nakon toga preskačemo prvih 5 i uzimamo narednih 8 karaktera
  78. o Sljedeći korak jeste da iz dobivenog stringa počevši od drugog karaktera naredna dva zamijenimo sa
  79.  X# (npr. ako je dobiveni string dbms2015 izlaz će biti dX#s2015)
  80.  
  81.  Starost i staž se formiraju na osnovu kolona BirthDate i HireDate
  82. Prikazati podatke samo za zaposlenike ženskog spola koji imaju više od 50 godina i više od 5 godina staža.*/
  83.  
  84. SELECT pp.FirstName + ' ' + pp.LastName AS [Ime i prezime zaposlenika],
  85.         REPLACE(hre.LoginID, 'adventure-works\' ,'') AS [Korisnicko ime],
  86.         SUBSTRING(REVERSE(hre.LoginID),5,8) AS [Nova loznika],
  87.         STUFF(SUBSTRING(REVERSE(ppass.PasswordHash),6,8),2,2,'X#') AS [Izmjena passworda],
  88.         DATEPART(YEAR,SYSDATETIME())-DATEPART(YEAR,hre.BirthDate) AS [Starost],
  89.         DATEPART(YEAR, SYSDATETIME())-DATEPART(YEAR, hre.HireDate) AS [Staz]
  90. FROM Person.Person AS pp
  91. INNER JOIN HumanResources.Employee AS hre ON pp.BusinessEntityID=hre.BusinessEntityID
  92. INNER JOIN Person.Password AS ppass ON pp.BusinessEntityID=ppass.BusinessEntityID
  93. WHERE DATEPART(YEAR,SYSDATETIME())-DATEPART(YEAR,hre.BirthDate) >50 AND DATEPART(YEAR, SYSDATETIME())-DATEPART(YEAR, hre.HireDate)>5
  94.     AND hre.Gender LIKE '%F%'
  95.  
  96.  
  97. SELECT REPLACE(LoginID, 'adventure-works\' ,'')
  98. FROM HumanResources.Employee
  99. SELECT * FROM HumanResources.Employee WHERE Gender IS NOT NULL
  100.  
  101. /*7. Prikazati ukupnu količinu prodaje i ukupnu zaradu od prodaje svakog pojedinog proizvoda po teritoriji.
  102. 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.
  103. Zaradu zaokružiti na dvije decimale, te izlaz sortirati po zaradi u opadajućem redoslijedu.*/
  104.  
  105. SELECT SUM(ssod.OrderQty) AS [Ukupna kolicina prodaje], ROUND(SUM(ssod.LineTotal),2) AS [Ukupna zarada],
  106.     pl.Name AS [Lokacija]
  107. FROM Production.Product AS pp
  108. INNER JOIN Sales.SalesOrderDetail AS ssod ON pp.ProductID=ssod.ProductID
  109. INNER JOIN Production.ProductInventory AS ppi ON pp.ProductID=ppi.ProductID
  110. INNER JOIN Production.Location AS pl ON ppi.LocationID=pl.LocationID
  111. WHERE ssod.SpecialOfferID=2
  112. GROUP BY ssod.LineTotal, pl.Name
  113. HAVING SUM(ssod.OrderQty)>100
  114. ORDER BY ssod.LineTotal DESC
  115.  
  116. SELECT *
  117. FROM Sales.SpecialOffer WHERE [Description] LIKE '%Volume Discount 11 to 14%'
  118.  
  119. /*8. Kreirati upit koji prikazuje četvrtu najveću platu u preduzeću (po visini primanja). Tabela EmployeePayHistory.*/
  120. SELECT TOP 4 MAX(hreph.Rate)
  121. FROM HumanResources.EmployeePayHistory AS hreph
  122.  
  123. /*9. Kreirati upit koji prikazuje naziv proizvoda, naziv lokacije, stanje zaliha na lokaciji,
  124. ukupno stanje zaliha na svim lokacijama i ukupnu prodanu količinu. Uzeti u obzir prodaju samo u 2013. Godini.*/
  125.  
  126. SELECT pp.Name AS [Naziv proizvoda], pl.Name AS [Naziv lokacije], ssod.OrderQty AS [Stanje zaliha],
  127.     SUM(ssod.OrderQty) AS [Ukupno stanje zaliha], CONVERT(varchar,ssoh.OrderDate,104) AS [Datum]
  128. FROM Production.Product AS pp
  129. INNER JOIN Production.ProductInventory AS ppi ON pp.ProductID=ppi.ProductID
  130. INNER JOIN Production.Location AS pl ON ppi.LocationID=pl.LocationID
  131. INNER JOIN Sales.SalesOrderDetail AS ssod ON ssod.ProductID=pp.ProductID
  132. INNER JOIN Sales.SalesOrderHeader AS ssoh ON ssoh.SalesOrderID=ssod.SalesOrderID
  133. WHERE DATEPART(YEAR, ssoh.OrderDate)=2013
  134. GROUP BY pp.Name, pl.Name, ssod.OrderQty,ssoh.OrderDate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement