Advertisement
limun11

BPII - Vjezba 4

Apr 3rd, 2017
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 7.37 KB | None | 0 0
  1. /*Iz vježbe 3, zadatke od broja 3-7 uraditi primjenom JOIN operatora!*/
  2.  
  3. /*3. Kreirati upit koji prikazuje ukupan broj kupaca po teritoriji. Lista treba da sadrži sljedeće kolone:
  4. ID teritorije, ukupan broj kupaca. Uzeti u obzir samo teritorije gdje ima više od 1000 kupaca.*/
  5.  
  6. SELECT COUNT (sc.CustomerID) AS [Ukupan broj kupaca], sc.TerritoryID AS [ID teritorije]
  7. FROM Person.Person AS pp
  8. INNER JOIN Sales.Customer AS sc ON pp.BusinessEntityID=sc.PersonID
  9. GROUP BY sc.TerritoryID
  10. HAVING COUNT (sc.CustomerID)>1000
  11. ORDER BY COUNT (sc.CustomerID) DESC
  12.  
  13. /*4. Prikazati ukupan broj proizvoda po modelu. Lista treba da sadrži ID modela proizvoda i ukupan broj proizvoda.
  14. Uslov je da proizvod pripada nekom modelu i da je ukupan broj proizvoda po modelu veći od 1.
  15. Također, prebrojati samo proizvode čiji naziv počinje slovom 'S'.*/
  16.  
  17. SELECT COUNT (pp.ProductID) AS [Ukupan broj proizvoda], ppm.Name
  18. FROM Production.Product AS pp
  19. INNER JOIN Production.ProductModel AS ppm ON pp.ProductModelID=ppm.ProductModelID
  20. WHERE pp.Name LIKE 'S%' AND pp.ProductModelID IS NOT NULL
  21. GROUP BY ppm.Name
  22. HAVING COUNT (pp.ProductID)>1
  23.  
  24. /*5. Kreirati upit koji prikazuje 10 najprodavanijih proizvoda. Lista treba da sadrži ID proizvoda i ukupnu količinu prodaje.
  25. Provjeriti da li ima proizvoda sa istom količinom prodaje kao zapis pod rednim brojem 10?*/
  26.  
  27. SELECT TOP 10 WITH TIES pp.Name, SUM(ppod.OrderQty) AS [Ukupna kolicina prodaje], pp.ProductID
  28. FROM Purchasing.PurchaseOrderDetail AS ppod
  29. INNER JOIN Production.Product AS pp ON ppod.ProductID=pp.ProductID
  30. GROUP BY pp.ProductID, pp.Name
  31. ORDER BY pp.Name
  32.  
  33. /*6. Kreirati upit koji prikazuje zaradu od prodaje proizvoda. Lista treba da sadrži ID proizvoda, ukupnu zaradu bez uračunatog popusta
  34. i ukupnu zaradu sa uračunatim popustom. Iznos zarade zaokružiti na dvije decimale. Uslov je da se prikaže zarada samo za stavke
  35. gdje je bilo popusta. Listu sortirati po zaradi opadajućim redoslijedom.*/
  36.  
  37. SELECT pp.Name, ROUND(SUM(ssod.UnitPrice),2) AS [Zarada bez popusta],
  38.         SUM(ssod.UnitPrice)-COUNT(ssod.OrderQty)*SUM(ssod.UnitPriceDiscount) AS [Zarada s popustom]
  39. FROM Sales.SalesOrderDetail AS ssod
  40. INNER JOIN Production.Product AS pp ON ssod.ProductID=pp.ProductID
  41. WHERE ssod.UnitPriceDiscount>0
  42. GROUP BY pp.Name
  43. ORDER BY SUM(ssod.UnitPrice) DESC
  44.  
  45. /*7. Prikazati broj narudžbe, datum narudžbe i datum isporuke za narudžbe koje su isporučene u Kanadu u 7. mjesecu 2014. godine.
  46. Uzeti u obzir samo narudžbe koje nisu plaćene kreditnom karticom. Datume formatirati u sljedećem obliku: dd.mm.yyyy*/
  47.  
  48. SELECT ssoh.SalesOrderID AS [Broj narudzbe], CONVERT(varchar,ssoh.OrderDate,104) AS [Datum narudzbe],
  49.         CONVERT(varchar,ssoh.ShipDate,104) AS [Datum isporuke]
  50. FROM Sales.SalesOrderHeader AS ssoh
  51. INNER JOIN Sales.SalesTerritory AS sst ON ssoh.TerritoryID=sst.TerritoryID
  52. WHERE MONTH(ssoh.ShipDate)=7 AND YEAR(ssoh.ShipDate)=2014 AND ssoh.CreditCardApprovalCode IS NOT NULL
  53.  
  54. --****************************************************************************************************************************
  55.  
  56. /*1. Kreirati upit koji prikazuje ime i prezime, korisničko ime (sve iza znaka „\“ u koloni LoginID), dužinu korisničkog imena, titulu,
  57. datum zaposlenja (dd.MM.yyyy), starost i staž zaposlenika. Uslov je da se prikaže 10 najstarijih zaposlenika koji obavljaju bilo
  58. koju ulogu menadžera.*/
  59.  
  60. SELECT TOP 10 pp.FirstName + ' ' + pp.LastName AS [Ime i prezime],
  61.         SUBSTRING(hre.LoginID,17,10) AS [LoginID],
  62.         LEN(SUBSTRING(hre.LoginID, 17,10)) AS [Duzina korisnckog imena],
  63.         hre.JobTitle AS [Titula],
  64.         CONVERT(varchar,hre.HireDate,104) AS [Datum zaposlenja],
  65.         DATEPART(YEAR,SYSDATETIME())-DATEPART(YEAR,hre.BirthDate) AS [Satrost],
  66.         DATEPART(YEAR, SYSDATETIME())-DATEPART(YEAR, hre.HireDate) AS [Staz zaposlenika]
  67. FROM Person.Person AS pp
  68. INNER JOIN HumanResources.Employee AS hre ON pp.BusinessEntityID=hre.BusinessEntityID
  69. WHERE hre.JobTitle LIKE '%Manager%'
  70. ORDER BY DATEPART(YEAR,SYSDATETIME())-DATEPART(YEAR,hre.BirthDate) DESC
  71.  
  72. /*2. Kreirati upit koji prikazuje 10 najskupljih stavki prodaje (detalji narudžbe) i to sljedeće kolone:
  73. naziv proizvoda, količina, cijena, iznos. Cijenu i iznos zaokružiti na dvije decimale. Također, količinu prikazati u formatu „10 kom.“,
  74. a cijenu i iznos u formatu „1000 KM“.*/
  75.  
  76. SELECT TOP 10 pp.Name AS [Naziv proizvoda],
  77.             CONVERT(nvarchar,ssod.OrderQty) + ' kom' AS [Kolicina],
  78.             CONVERT(nvarchar,ROUND([UnitPrice],2))+' KM' AS [Cijena],
  79.             CONVERT(nvarchar,ROUND([ListPrice],2)) + ' KM' AS [Iznos]
  80. FROM Production.Product AS pp
  81. INNER JOIN Sales.SalesOrderDetail AS ssod ON pp.ProductID=ssod.ProductID
  82.  
  83. /*3. Kreirati upit koji prikazuje naziv modela i opis modela proizvoda. Uslov je da naziv modela sadrži riječ „Mountain“,
  84. dok je opis potrebno prikazati samo na engleskom jeziku.*/
  85.  
  86. SELECT ppm.Name AS [Naziv modela], ppd.Description AS [Opis modela proizvoda]
  87. FROM Production.ProductModel AS ppm
  88. INNER JOIN Production.ProductModelProductDescriptionCulture AS ppmpdc ON ppm.ProductModelID=ppmpdc.ProductModelID
  89. INNER JOIN Production.ProductDescription AS ppd ON ppmpdc.ProductDescriptionID=ppd.ProductDescriptionID
  90. INNER JOIN Production.Culture AS pc ON ppmpdc.CultureID=pc.CultureID
  91. WHERE ppm.Name LIKE '%Mountain%' AND pc.Name='English'
  92.  
  93. SELECT *
  94. FROM Production.Culture
  95.  
  96.  
  97. /*4. Kreirati upit koji prikazuje broj, naziv i cijenu proizvoda, te stanje zaliha po lokacijama.
  98. Uzeti u obzir samo proizvode koji pripadaju kategoriji „Bikes“. Izlaz sortirati po stanju zaliha u opadajućem redoslijedu.*/
  99.  
  100. SELECT pp.ProductNumber AS [Broj],
  101.         pp.ListPrice AS [Cijena],
  102.         pp.Name AS [Ime],
  103.         SUM(ppi.Quantity) AS [Stanje zaliha],
  104.         pl.Name AS [Lokacija]
  105. FROM Production.Product AS pp
  106. INNER JOIN Production.ProductSubcategory AS pps ON pp.ProductSubcategoryID=pps.ProductSubcategoryID
  107. INNER JOIN Production.ProductCategory AS ppc ON pps.ProductCategoryID=ppc.ProductCategoryID
  108. INNER JOIN Production.ProductInventory AS ppi ON pp.ProductID=ppi.ProductID
  109. INNER JOIN Production.Location AS pl ON ppi.LocationID=pl.LocationID
  110. WHERE ppc.Name LIKE '%Bikes%'
  111. GROUP BY pp.ProductNumber, pp.ListPrice, pp.Name, pl.Name
  112. ORDER BY SUM(ppi.Quantity) DESC
  113.  
  114.  
  115. /*5. Kreirati upit koji prikazuje ukupno ostvarenu zaradu po zaposleniku, na području Evrope, u januaru mjesecu 2014. godine.
  116. Lista treba da sadrži ime i prezime zaposlenika, datum zaposlenja (dd.MM.yyyy), mail adresu, te ukupnu ostvarenu zaradu zaokruženu na
  117. dvije decimale. Izlaz sortirati po zaradi u opadajućem redoslijedu.*/
  118.  
  119. SELECT pp.FirstName + ' ' +pp.LastName AS [Ime i prezime],
  120.         CONVERT(varchar,hre.HireDate, 104) AS [Datum zaposlenja],
  121.         pea.EmailAddress AS [email],
  122.         ROUND(SUM(ssp.SalesYTD),2) AS [Ukupna ostvarena zarada]
  123. FROM HumanResources.Employee AS hre
  124. INNER JOIN Person.Person AS pp ON hre.BusinessEntityID=pp.BusinessEntityID
  125. INNER JOIN Person.EmailAddress AS pea ON pp.BusinessEntityID=pea.BusinessEntityID
  126. INNER JOIN Sales.SalesPerson AS ssp ON hre.BusinessEntityID=ssp.BusinessEntityID
  127. INNER JOIN Sales.SalesTerritory AS sst ON ssp.TerritoryID=sst.TerritoryID
  128. INNER JOIN Sales.SalesOrderHeader AS ssoh ON ssp.BusinessEntityID=ssoh.SalesPersonID
  129. WHERE sst.[Group] LIKE '%Europe%' AND DATEPART(YEAR, ssoh.DueDate)='2014' AND DATEPART(MONTH, ssoh.DueDate)='01'
  130. GROUP BY pp.FirstName, pp.LastName, pea.EmailAddress, CONVERT(varchar,hre.HireDate, 104)
  131. ORDER BY ROUND(SUM(ssp.SalesYTD),2) DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement