Advertisement
Guest User

Vjezba 4

a guest
Mar 23rd, 2017
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.70 KB | None | 0 0
  1. USE AdventureWorks2014
  2. GO
  3.  
  4. /*3. Kreirati upit koji prikazuje ukupan broj kupaca po teritoriji. Lista treba da sadrži sljedeće kolone:
  5.  ID teritorije, ukupan broj kupaca. Uzeti u obzir samo teritorije gdje ima više od 1000 kupaca.*/
  6.  
  7.  --0Zadatak 3 vjezbe 3 uradjen sa join-om
  8.  
  9.  
  10.  SELECT st.TerritoryID ,count(c.CustomerID) AS Ukupno
  11.  FROM Sales.Customer AS c INNER JOIN sales.SalesTerritory as st
  12.       ON c.TerritoryID = st.TerritoryID
  13. GROUP BY st.TerritoryID
  14. HAVING count(c.CustomerID) >1000
  15.  
  16.  
  17. /*4. Prikazati ukupan broj proizvoda po modelu. Lista treba da sadrži ID modela proizvoda i
  18. ukupan broj proizvoda. Uslov je da proizvod pripada nekom modelu i da je ukupan broj proizvoda po modelu
  19.  veći od 1. Također, prebrojati samo proizvode čiji naziv počinje slovom 'S'.*/
  20.  
  21. --Zadatak 4 vjezba 3 uradjeno sa join-om
  22.  
  23.  
  24. SELECT PM.ProductModelID , Count(p.ProductID), PM.Name
  25. FROM  Production.Product AS P INNER JOIN Production.ProductModel AS PM
  26.       ON p.ProductModelID = PM.ProductModelID
  27. WHERE (PM.ProductModelID IS NOT NULL )  AND (p.Name LIKE 'S%')
  28. GROUP BY PM.ProductModelID, PM.Name
  29. HAVING  Count(p.ProductID) > 1
  30.  
  31.  
  32. /*5. Kreirati upit koji prikazuje 10 najprodavanijih proizvoda. Lista treba da sadrži ID proizvoda
  33. i ukupnu količinu prodaje. Provjeriti da li ima proizvoda sa istom količinom prodaje kao zapis pod rednim brojem 10?*/
  34.  
  35. -- zadatak 5 vjezba 3 uradjen sa join-om
  36.  
  37. SELECT TOP 10 WITH TIES SOD.ProductID , SUM(SOD.OrderQty) AS 'Ukupna količina prodaje'
  38. FROM Sales.SalesOrderDetail AS SOD INNER JOIN sales.SpecialOfferProduct AS SOP
  39.     ON SOD.SpecialOfferID = SOP.SpecialOfferID AND SOD.ProductID = SOP.ProductID INNER JOIN Production.Product AS P
  40.     ON SOP.ProductID = P.ProductID
  41. GROUP BY SOD.ProductID
  42. ORDER BY 2 DESC
  43.  
  44.  
  45. /*6. Kreirati upit koji prikazuje zaradu od prodaje proizvoda. Lista treba da sadrži ID proizvoda,
  46. ukupnu zaradu bez uračunatog popusta i ukupnu zaradu sa uračunatim popustom. Iznos zarade zaokružiti
  47. na dvije decimale. Uslov je da se prikaže zarada samo za stavke gdje je bilo popusta. Listu sortirati
  48. po zaradi opadajućim redoslijedom.*/
  49.  
  50.  
  51. -- Zadatak 6 vjezbe 3 uradjen sa join-om
  52.  
  53. SELECT P.ProductID as 'ID Proizvoda',
  54.        ROUND(SUM(SOD.UnitPrice * SOD.OrderQty),2) AS 'Ukupna zarada bez popusta',
  55.        ROUND (SUM((SOD.UnitPrice * SOD.OrderQty)-(SOD.UnitPrice*SOD.OrderQty*SOD.UnitPriceDiscount)),2) AS 'Ukupna zarada sa popustom',
  56.        SOD.UnitPriceDiscount AS Popust
  57. FROM Sales.SalesOrderDetail AS SOD INNER JOIN Sales.SpecialOfferProduct AS SOP
  58.     ON SOD.SpecialOfferID = SOP.SpecialOfferID AND SOD.ProductID = SOP.ProductID
  59.     INNER JOIN Production.Product AS P
  60.     ON SOP.ProductID = P.ProductID
  61. WHERE SOD.UnitPriceDiscount>0
  62. GROUP BY P.ProductID,SOD.UnitPriceDiscount
  63. ORDER BY "Ukupna zarada bez popusta" DESC  
  64.  
  65.  
  66. /*7. Prikazati broj narudžbe, datum narudžbe i datum isporuke za narudžbe koje su isporučene
  67. u Kanadu u 7. mjesecu 2014. godine. Uzeti u obzir samo narudžbe koje nisu plaćene kreditnom karticom.
  68. Datume formatirati u sljedećem obliku: dd.mm.yyyy*/
  69.  
  70. --Vjezba 3 zadatak 7 uradjen sa join-om
  71.  
  72. SELECT SOH.SalesOrderNumber AS 'Broj narudžbe',
  73.        CONVERT(NVARCHAR(10),SOH.OrderDate,104) AS 'Datum narudžbe',
  74.       CONVERT(NVARCHAR(10),SOH.DueDate,104) AS 'Datum isporuke'
  75. FROM Sales.SalesOrderHeader AS SOH INNER JOIN Sales.SalesTerritory AS ST
  76.     ON SOH.TerritoryID = ST.TerritoryID
  77. WHERE ST.Name LIKE 'Canada' AND MONTH(DueDate) ='7'AND  YEAR(DueDate) = '2014' AND SOH.CreditCardID IS NULL
  78.  
  79.  
  80. /*ZADATAK 1. Kreirati upit koji prikazuje ime i prezime, korisničko ime (sve iza znaka „\“ u koloni LoginID),
  81. dužinu korisničkog imena, titulu, datum zaposlenja (dd.MM.yyyy), starost i staž zaposlenika.
  82.  Uslov je da se prikaže 10 najstarijih zaposlenika koji obavljaju bilo koju ulogu menadžera.*/
  83.  
  84. --1 Zadatak
  85.  
  86. SELECT TOP 10 P.FirstName AS Ime ,
  87.        P.LastName AS Prezime,
  88.        SUBSTRING(E.LoginID,17,10) AS 'Korisničko ime',
  89.        LEN(SUBSTRING(E.LoginID,17,10)) AS 'Dužina korisničkog imena',
  90.        P.Title,
  91.        CONVERT(NVARCHAR(10),E.HireDate,104) AS 'Datum zaposlenja',
  92.        DATEPART(YEAR,SYSDATETIME()) - DATEPART(YEAR,(E.BirthDate)) AS Starost,
  93.        DATEPART(YEAR,SYSDATETIME()) - DATEPART(YEAR,(E.HireDate))  AS Staž,
  94.        E.JobTitle AS 'Titula na poslu'
  95. FROM HumanResources.Employee AS E INNER JOIN Person.Person AS P
  96.     ON E.BusinessEntityID = P.BusinessEntityID
  97. WHERE E.JobTitle LIKE '%Manager%'
  98. ORDER BY E.BirthDate
  99.  
  100. /*2. Kreirati upit koji prikazuje 10 najskupljih stavki prodaje (detalji narudžbe) i to sljedeće kolone:
  101. naziv proizvoda, količina, cijena, iznos. Cijenu i iznos zaokružiti na dvije decimale.
  102. Također, količinu prikazati u formatu „10 kom.“, a cijenu i iznos u formatu „1000 KM“.*/
  103.  
  104. --2 Zadatak
  105.  
  106. SELECT TOP 10  P.Name AS Ime ,
  107.        CONVERT (nvarchar, SOD.OrderQty)+ ' kom' AS Količina,
  108.        CONVERT (nvarchar,ROUND(SOD.UnitPrice,2))+ ' KM' AS Cijena ,
  109.        CAST(ROUND((SOD.OrderQty * SOD.UnitPrice),2)AS nvarchar(15)) + ' KM' AS Iznos
  110. FROM Sales.SalesOrderDetail AS SOD INNER JOIN Sales.SpecialOfferProduct AS SOP
  111.     ON SOD.SpecialOfferID = SOP.SpecialOfferID AND SOD.ProductID = SOP.ProductID INNER JOIN
  112.     Production.Product AS P
  113.     ON SOP.ProductID = P.ProductID
  114.  
  115. --2* drugi nacin
  116. SELECT TOP 10  P.Name AS Ime ,
  117.        CONVERT (nvarchar, SOD.OrderQty)+ ' kom' AS Količina,
  118.        CONVERT (nvarchar,ROUND(SOD.UnitPrice,2))+ ' KM' AS Cijena ,
  119.        CAST(ROUND((SOD.OrderQty * SOD.UnitPrice),2)AS nvarchar(15)) + ' KM' AS Iznos
  120. FROM Production.Product AS P INNER JOIN Sales.SalesOrderDetail AS SOD
  121.     ON P.ProductID = SOD.ProductID
  122. ORDER BY SOD.UnitPrice DESC
  123.  
  124.  
  125. /*3. Kreirati upit koji prikazuje naziv modela i opis modela proizvoda.
  126. Uslov je da naziv modela sadrži riječ „Mountain“, dok je opis potrebno prikazati samo na engleskom jeziku.*/
  127.  
  128. --3 Zadatak
  129.  
  130.  
  131. SELECT PM.Name , PD.Description ,
  132.         PC.Name AS 'Jezik opisa'
  133. FROM Production.ProductModel AS PM INNER JOIN Production.ProductModelProductDescriptionCulture AS PMPD
  134.     ON PM.ProductModelID = PMPD.ProductModelID INNER JOIN Production.ProductDescription AS PD
  135.     ON PMPD.ProductDescriptionID = PD.ProductDescriptionID INNER JOIN Production.Culture AS PC
  136.     ON PMPD.CultureID = PC.CultureID
  137.  WHERE PM.Name LIKE '%Mountain%' AND PC.CultureID = 'en'
  138.  
  139.  /*4. Kreirati upit koji prikazuje broj, naziv i cijenu proizvoda, te stanje zaliha po lokacijama.
  140.   Uzeti u obzir samo proizvode koji pripadaju kategoriji „Bikes“. Izlaz sortirati po stanju zaliha u opadajućem redoslijedu.*/
  141.  
  142. --4 Zadatak
  143.  
  144. SELECT P.ProductNumber AS Broj , P.Name AS Naziv , P.ListPrice , PII.Quantity
  145. FROM Production.Product AS P INNER JOIN Production.ProductInventory AS PII
  146.     ON P.ProductID = PII.ProductID INNER JOIN Production.ProductSubcategory AS PS
  147.     ON P.ProductSubcategoryID = PS.ProductSubcategoryID
  148. WHERE PS.ProductCategoryID =1
  149. ORDER BY Quantity DESC
  150.  
  151. --4 Zadatak nacin 2
  152. SELECT P.ProductNumber AS Broj , P.Name AS Naziv , P.ListPrice AS Cijena, PII.Quantity AS Zalihe ,PL.Name AS Lokacija,
  153.  PC.Name AS Kategorija
  154. FROM Production.Product AS P JOIN Production.ProductInventory AS PII
  155.     ON P.ProductID = PII.ProductID JOIN Production.Location AS PL
  156.     ON PII.LocationID = PL.LocationID JOIN Production.ProductSubcategory AS PS
  157.     ON P.ProductSubcategoryID = PS.ProductSubcategoryID JOIN Production.ProductCategory AS PC
  158.     ON PS.ProductCategoryID = PC.ProductCategoryID
  159. WHERE PC.Name LIKE '%Bikes%'
  160. ORDER BY PII.Quantity DESC
  161. SELECT *
  162. FROM Production.ProductCategory
  163.  
  164. /*5. Kreirati upit koji prikazuje ukupno ostvarenu zaradu po zaposleniku, na području Evrope,
  165. u januaru mjesecu 2014. godine. Lista treba da sadrži ime i prezime zaposlenika,
  166. datum zaposlenja (dd.MM.yyyy), mail adresu, te ukupnu ostvarenu zaradu zaokruženu na dvije decimale.
  167. Izlaz sortirati po zaradi u opadajućem redoslijedu.*/
  168.  
  169. --5
  170.  
  171. SELECT P.FirstName AS Ime , P.LastName AS Prezime ,CONVERT(nvarchar(10),E.HireDate,104) AS 'Datum zaposlenja',
  172.        EA.EmailAddress, ST.[Group] AS Teritorija,
  173.        SUM(SOH.TotalDue) AS' Ukupna zarada', CONVERT(nvarchar(10),SOH.DueDate,104) AS 'Datum isporuke'
  174. FROM HumanResources.Employee AS E INNER JOIN Person.Person AS P
  175.     ON E.BusinessEntityID = P.BusinessEntityID INNER JOIN Sales.SalesPerson AS SP
  176.     ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Sales.SalesOrderHeader AS SOH
  177.     ON SP.BusinessEntityID =SOH.SalesPersonID INNER JOIN Sales.SalesTerritory AS ST
  178.     ON SP.TerritoryID = ST.TerritoryID INNER JOIN Person.EmailAddress AS EA
  179.     ON P.BusinessEntityID = EA.BusinessEntityID
  180. WHERE ST.[Group] LIKE  '%Europe%' AND DATEPART(Month,SOH.DueDate) = '01' AND DATEPART (Year ,SOH.DueDate) = '2014'
  181. GROUP BY  P.FirstName ,P.LastName , CONVERT(nvarchar(10),E.HireDate,104) ,EA.EmailAddress , ST.[Group],
  182.           CONVERT(nvarchar(10),SOH.DueDate,104)
  183. ORDER BY SUM(SOH.TotalDue) DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement