Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.25 KB | None | 0 0
  1. -- Zadanie1
  2. SELECT DISTINCT YEAR(OrderDate)
  3. FROM Sales.SalesOrderHeader
  4. ORDER BY 1;
  5.  
  6. SELECT *
  7. FROM Sales.SalesOrderHeader
  8. WHERE YEAR(OrderDate) = (
  9. SELECT MIN(YEAR(OrderDate))
  10. FROM Sales.SalesOrderHeader
  11. )
  12.  
  13. SELECT *
  14. FROM Sales.SalesOrderHeader
  15. WHERE MONTH(OrderDate) = 5
  16.  
  17.  
  18. --Zadanie 2
  19. SELECT Sales.Customer.CustomerID, MIN(LastName + ', ' + FirstName) "Imię, nazwisko",
  20. COUNT(*) "Liczba zamówień"
  21. FROM Sales.Customer JOIN Person.Person ON Sales.Customer.CustomerID = Person.Person.BusinessEntityID
  22. JOIN Sales.SalesOrderHeader ON Sales.SalesOrderHeader.CustomerID = Sales.Customer.CustomerID
  23. GROUP BY Customer.CustomerID
  24. HAVING COUNT(*) >25
  25. ORDER BY 3 DESC;
  26.  
  27.  
  28. DECLARE @ordersIn2011 TABLE(customerID INT, orderYear INT, numberOfOrders INT)
  29. INSERT INTO @ordersIn2011
  30. SELECT CustomerID, YEAR(OrderDate) orderYear, COUNT(*)
  31. FROM Sales.SalesOrderHeader
  32. WHERE (YEAR(OrderDate) != 2012
  33. OR YEAR(OrderDate) != 2014)
  34. AND YEAR(OrderDate) = 2011
  35. GROUP BY CustomerID, YEAR(OrderDate)
  36.  
  37. DECLARE @ordersIn2014 TABLE(customerID INT, orderYear INT, numberOfOrders INT)
  38. INSERT INTO @ordersIn2014
  39. SELECT CustomerID, YEAR(OrderDate) orderYear, COUNT(*)
  40. FROM Sales.SalesOrderHeader
  41. WHERE (YEAR(OrderDate) != 2012
  42. OR YEAR(OrderDate) != 2014)
  43. AND YEAR(OrderDate) = 2014
  44. GROUP BY CustomerID, YEAR(OrderDate)
  45.  
  46. SELECT customerID "klientID", orderYear "Rok", numberOfOrders "Liczba zamówień"
  47. FROM @ordersIn2011
  48. WHERE customerID IN (SELECT customerID FROM @ordersIn2014)
  49. UNION ALL
  50. SELECT customerID "klientID", orderYear "Rok", numberOfOrders "Liczba zamówień"
  51. FROM @ordersIn2014
  52. WHERE customerID IN (SELECT customerID FROM @ordersIn2011)
  53. ORDER BY customerID
  54.  
  55.  
  56. --Zadanie 3
  57. CREATE TABLE Sprzedaz
  58. (
  59. pracID INTEGER NOT NULL,
  60. prodID INTEGER NOT NULL,
  61. "Nazwa produktu" dbo.Name NOT NULL,
  62. Rok INTEGER NOT NULL,
  63. Ilość INTEGER NOT NULL,
  64. );
  65.  
  66. INSERT INTO Sprzedaz
  67. SELECT SalesPersonID, Product.ProductID, MAX(Name), YEAR(OrderDate) orderYear, SUM(OrderQty)
  68. FROM Sales.SalesOrderDetail JOIN Sales.SalesOrderHeader
  69. ON SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID
  70. JOIN Production.Product ON Product.ProductID = SalesOrderDetail.ProductID
  71. JOIN Sales.SpecialOfferProduct ON SpecialOfferProduct.ProductID = SalesOrderDetail.ProductID
  72. WHERE SalesPersonID IS NOT NULL
  73. GROUP BY SalesPersonID, Product.ProductID, YEAR(OrderDate);
  74.  
  75. SELECT * FROM dbo.Sprzedaz;
  76. TRUNCATE TABLE dbo.Sprzedaz;
  77.  
  78.  
  79. --z pivotem
  80. SELECT piv.SalesPersonID, piv.ProductID, piv.Name, [2011], [2012], [2013], [2014]
  81. FROM
  82. (
  83. SELECT SalesPersonID, Product.ProductID, Name, YEAR(OrderDate) orderYear, OrderQty quantity
  84. FROM Sales.SalesOrderDetail JOIN Sales.SalesOrderHeader
  85. ON SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID
  86. JOIN Production.Product ON Product.ProductID = SalesOrderDetail.ProductID
  87. JOIN Sales.SpecialOfferProduct ON SpecialOfferProduct.ProductID = SalesOrderDetail.ProductID
  88. WHERE SalesPersonID IS NOT NULL
  89. ) query
  90. PIVOT
  91. (
  92. SUM(quantity)
  93. FOR orderYear IN ([2011], [2012], [2013], [2014])
  94. ) piv
  95. ORDER BY piv.SalesPersonID
  96.  
  97.  
  98. --zadanie 4
  99. --1)
  100. SELECT YEAR(OrderDate) "Year", MONTH(OrderDate) "Month", COUNT(DISTINCT CustomerID) "Number of customers"
  101. FROM Sales.SalesOrderHeader
  102. GROUP BY YEAR(OrderDate), MONTH(OrderDate)
  103. ORDER BY Year, MONTH
  104.  
  105. SELECT piv.saleYear, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]
  106. FROM
  107. (
  108. SELECT DISTINCT YEAR(OrderDate) saleYear,
  109. MONTH(OrderDate) saleMonth,
  110. CustomerID
  111. FROM Sales.SalesOrderHeader
  112. ) query
  113. PIVOT
  114. (
  115. COUNT(CustomerID)
  116. FOR saleMonth IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
  117. ) piv
  118. ORDER BY piv.saleYear
  119.  
  120. --2)
  121. SELECT YEAR(OrderDate) "Rok", MONTH(OrderDate) "Miesiac", DAY(OrderDate) "Dzien", SUM(TotalDue) "Suma kwot", COUNT(DISTINCT ProductID) "Liczba roznych towarów"
  122. FROM Sales.SalesOrderDetail JOIN Sales.SalesOrderHeader
  123. ON SalesOrderDetail.SalesOrderID = SalesOrderHeader.SalesOrderID
  124. GROUP BY YEAR(OrderDate), MONTH(OrderDate), DAY(OrderDate)
  125. ORDER BY YEAR(OrderDate), MONTH(OrderDate), DAY(OrderDate);
  126.  
  127.  
  128. --zadanie 6
  129. DECLARE @platinum TABLE(CustomerID INTEGER, numberOfOrders Integer, transactionsAmount MONEY, color NVARCHAR(10))
  130. INSERT INTO @platinum
  131. SELECT goldQuery.CustomerID, SUM(goldQuery.numberOfOrders) numberOfOrders, SUM(goldQuery.transactionsAmount) transactionsAmount, 'Platynowa' color
  132. FROM
  133. (
  134. SELECT CustomerID, COUNT(*) numberOfOrders, SUM(SubTotal) transactionsAmount, 'Złota' color
  135. FROM Sales.SalesOrderHeader
  136. WHERE CustomerID NOT IN (SELECT customerID FROM @platinum) AND
  137. SubTotal > (SELECT AVG(SubTotal) * 1.5 FROM Sales.SalesOrderHeader)
  138. GROUP BY CustomerID
  139. HAVING COUNT(*) >= 2
  140. ) goldQuery
  141. GROUP BY goldQuery.CustomerID
  142. HAVING COUNT(goldQuery.CustomerID) = (
  143. SELECT COUNT(DISTINCT YEAR(OrderDate))
  144. FROM Sales.SalesOrderHeader)
  145.  
  146. DECLARE @gold TABLE(CustomerID INTEGER, numberOfOrders Integer, transactionsAmount MONEY, color NVARCHAR(10))
  147. INSERT INTO @gold
  148. SELECT CustomerID, COUNT(*) numberOfOrders, SUM(SubTotal) transactionsAmount, 'Złota' color
  149. FROM Sales.SalesOrderHeader
  150. WHERE CustomerID NOT IN (SELECT customerID FROM @platinum) AND
  151. SubTotal > (SELECT AVG(SubTotal) * 1.5 FROM Sales.SalesOrderHeader)
  152. GROUP BY CustomerID
  153. HAVING COUNT(*) >= 2
  154.  
  155.  
  156. DECLARE @silver TABLE(CustomerID INTEGER, numberOfOrders Integer, transactionsAmount MONEY, color NVARCHAR(10))
  157. INSERT INTO @silver
  158. SELECT CustomerID, COUNT(*) numberOfOrders, SUM(SubTotal) transactionsAmount, 'Srebrna' color
  159. FROM Sales.SalesOrderHeader
  160. WHERE CustomerID NOT IN (SELECT customerID FROM @platinum) AND
  161. CustomerID NOT IN (SELECT customerID FROM @gold)
  162. GROUP BY CustomerID
  163. HAVING COUNT(*) >= 5
  164.  
  165.  
  166.  
  167.  
  168. INSERT INTO dbo.KartyLojalnosciowe
  169. SELECT FirstName, LastName, numberOfOrders, transactionsAmount, color
  170. FROM Sales.Customer JOIN Person.Person ON Person.BusinessEntityID = Customer.PersonID
  171. JOIN @platinum ON [@platinum].customerID = Customer.CustomerID
  172. UNION ALL
  173. SELECT FirstName, LastName, numberOfOrders, transactionsAmount, color
  174. FROM Sales.Customer JOIN Person.Person ON Person.BusinessEntityID = Customer.PersonID
  175. JOIN @gold ON [@gold].customerID = Customer.CustomerID
  176. UNION ALL
  177. SELECT FirstName, LastName, numberOfOrders, transactionsAmount, color
  178. FROM Sales.Customer JOIN Person.Person ON Person.BusinessEntityID = Customer.PersonID
  179. JOIN @silver ON [@silver].customerID = Customer.CustomerID
  180.  
  181. SELECT * FROM dbo.KartyLojalnosciowe
  182.  
  183.  
  184. DROP TABLE dbo.KartyLojalnosciowe
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement