Advertisement
addme

bazy danych zadania

Nov 15th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 7.73 KB | None | 0 0
  1. Bazy danych, ćwiczenia 6
  2. .
  3. Język SQL, zadania
  4. .
  5. Zadania będą dotyczyć bazy danych Northwind.
  6.  
  7. Zadanie 1.
  8. Proszę wypisać wszystkich klientów z Polski i z Niemiec.
  9.  
  10. select * from customers where country = 'Poland' or country = 'germany'
  11.  
  12. Zadanie 2.
  13. Proszę wypisać wszystkich klientów, których nazwa rozpoczyna się od litery N oraz tych,
  14. których nazwa
  15. rozpoczyna się od litery C.
  16.  
  17. select * from customers where CompanyName like 'c%' or companyname like 'n%'
  18.  
  19.  
  20.  
  21. Zadanie 3.
  22. Proszę wypisać dane wszystkich towarów, które są z kategorii o nazwach rozpoczynających
  23. się na literę C.
  24.  
  25. select * from products p
  26. where p.CategoryID in (select c.CategoryID from Categories c where c.CategoryName like 'C%')
  27.  
  28.  
  29. Zadanie 4.
  30. Proszę wypisać następujące dane z zamówień: OrderID, OrderDate, ProductID,
  31. ProductName, UnitPrice(z tabeli [Order Details])
  32. , Quantity, CategoryName, CustomerID,
  33. CompanyName. Ile wierszy ma taki zestaw danych?
  34.  
  35. select o.OrderID, o.OrderDate, od.ProductID, p.ProductName, p.UnitPrice, od.Quantity, cat.CategoryName, c.CustomerID,
  36. c.CompanyName
  37. from orders o
  38. join [Order Details] od on od.OrderID = o.OrderID
  39. join customers c on o.CustomerID = c.CustomerID
  40. join products p on p.ProductID = od.ProductID
  41. join Categories cat on cat.CategoryID = p.CategoryID
  42.  
  43.  
  44.  
  45.  
  46. Zadanie 5.
  47. Proszę wypisać wszystkich klientów, którzy nie mają wpisane nic do kolumny Region.
  48.  
  49. select * from customers where region is null
  50. Zadanie 6.
  51. Proszę wypisać wszystkie kraje, z których mamy klientów.
  52. select distinct country from customers
  53.  
  54. Zadanie 7.
  55. Proszę wypisać wszystkie produkty kategorii o nazwie ‘Beverages’ (napoje) o cenie
  56. jednostkowej większej bądź równej niż 20 i mniejszej bądź równej 30.
  57.  
  58. select * from products p
  59. join Categories c on c.CategoryID = p.CategoryID and c.CategoryName = 'Beverages'
  60. where p.UnitPrice >=20 and p.UnitPrice <= 30
  61.  
  62. Zadanie 8.
  63. Proszę wypisać wszystkich klientów, którzy jeszcze nic nie zamówili. Wskazówka: należy połączyć tabelę Customers
  64. z tabelą Orders przez złączenie zewnętrzne (np.LEFT JOIN) i dodać odpowiednią klauzulę WHERE.
  65. select * from customers c
  66. left join orders o on o.CustomerID = c.CustomerID
  67. where o.CustomerID is null
  68.  
  69. Zadanie 9.
  70. Proszę wypisać wszystkich klientów, którzy jeszcze nic nie zamówili. Należy wykorzystać
  71. złożenie operatorów NOT oraz IN.
  72. se
  73. select * from customers c
  74. where c.CustomerID not in (select distinct o.CustomerID from orders o)
  75. Zadanie 10.
  76. Proszę wypisać wszystkich
  77. klientów, którzy jeszcze nic nie zamówili. Należy wykorzystać
  78. złożenie operatorów NOT oraz EXISTS.
  79.  
  80. select * from customers c where not exists (select o.orderid from orders o where o.CustomerID = c.CustomerID)
  81.  
  82. Zadanie 11.
  83. Proszę wypisać ilu mamy klientów z Polski i z Niemiec (zestaw ma mieć dwie kolumny: kraj i
  84. liczbę klientów).
  85.  
  86. select country, count(*) from customers
  87. where country = 'poland' or country = 'germany'
  88. group by country
  89.  
  90. Zadanie 12.
  91. Proszę wypisać z ilu krajów mamy klientów (zdanie ma wypisać jedną liczbę).
  92. select count(distinct country) from customers
  93.  
  94. Zadanie 13.
  95. Proszę wypisać dla każdego dnia ile przyjęto w ciągu tego dnia zamówień.
  96. select o.OrderDate, count(*) as "Ile" from orders o
  97. group by o.OrderDate
  98.  
  99. Zadanie 14.
  100. Proszę wypisać, ile złożono zamówień na każdą kategorię towarów.
  101.  
  102. select p.categoryid, count(o.orderid) as "ile na kategorie"
  103. from products p
  104. right join [Order Details] od on od.ProductID = p. ProductID
  105. right join Orders o on o.OrderID = od.OrderID
  106. group by p.CategoryID
  107.  
  108. select * from orders
  109. select * from [order details]
  110.  
  111. Zadanie 15.
  112. Proszę wypisać dla każdego towaru ilu klientów złożyło zamówienie na ten towar.
  113. select p.ProductName, count (o.CustomerID) "ilu zamowilo" from orders o
  114. join [Order Details] od on od.OrderID = o.OrderID
  115. right join products p on p.ProductID = od.ProductID
  116. group by p.ProductName
  117.  
  118. Zadanie 16.
  119. Proszę wypisać najwyższe i najniższe ceny towarów w każdej kategorii, przy czym chodzi o
  120. towary o cenach wyższych od 30.
  121.  
  122. select p.CategoryID, max( p.unitprice) "max", min(p.unitprice) "min" from products p
  123. where  p.unitprice >30
  124. group by p.CategoryID
  125.  
  126.  
  127. Zadanie 17.
  128. Proszę wypisać dla każdego dnia jaka jest suma kwot na wszystkich zamówieniach w danym dniu.
  129.  
  130. select o.orderdate, sum (sub1.sumaWzam ) "suma w dniu"
  131. from
  132.     (select  o.orderid, sum(od.unitprice) "sumaWzam"
  133.     from orders o
  134.     join [Order Details] od on od.OrderID = o.OrderID
  135.     group by o.OrderID) sub1
  136. join orders o on o.orderid = sub1.orderid
  137. group by o.OrderDate
  138.  
  139.  
  140.  
  141. Zadanie 18.
  142. Proszę zmodyfikować rozwiązanie poprzedniego zadania tak, by w każdym dniu pokazana
  143. była suma kwot uzyskanych za zamówienia poszczególnych produktów.
  144. select o.orderdate,sub1.productid, sum (sub1.sumaWzam ) "suma w dniu"
  145. from
  146.     (select  o.orderid, od.productid , sum(od.unitprice) "sumaWzam"
  147.     from orders o
  148.     join [Order Details] od on od.OrderID = o.OrderID
  149.     group by od.productid, o.OrderID) sub1
  150. join orders o on o.orderid = sub1.orderid
  151. group by o.OrderDate, sub1.productid
  152.  
  153.  
  154.  
  155. Zadanie 19.
  156. Proszę wypisać identyfikatory klientów (może być jeden taki klient lub więcej), którzy
  157. zamówili złożyli zamówienia w sumie na największą kwotę.
  158.  
  159. select o.CustomerID
  160.     from [Order Details] od
  161.     join orders o on od.OrderID = o.OrderID
  162.     group by o.CustomerID
  163.     having sum(od.unitprice) =
  164.         (select  max(WartosciZamowien.sumWZam)
  165.         from
  166.             (select o.CustomerID,  sum(od.unitprice) "sumWZam"
  167.             from [Order Details] od
  168.             join orders o on od.OrderID = o.OrderID
  169.             group by o.CustomerID ) "WartosciZamowien" )
  170.  
  171.  
  172. Zadanie 20.
  173. Proszę wypisać wszystkie dane klientów (może być jeden taki klient lub więcej), którzy
  174. zamówili złożyli zamówienia w sumie na największą kwotę.
  175. select c.* from customers c
  176. join
  177. (select o.CustomerID
  178.     from [Order Details] od
  179.     join orders o on od.OrderID = o.OrderID
  180.     group by o.CustomerID
  181.     having sum(od.unitprice) =
  182.         (select  max(WartosciZamowien.sumWZam)
  183.         from
  184.             (select o.CustomerID,  sum(od.unitprice) "sumWZam"
  185.             from [Order Details] od
  186.             join orders o on od.OrderID = o.OrderID
  187.             group by o.CustomerID ) "WartosciZamowien" ) )"maksKlienci"
  188. on maksKlienci.CustomerID = c.CustomerID
  189.    
  190.  
  191. Zadanie 21.
  192. Proszę wypisać najwyższe i najniższe ceny towarów w każdej kategorii.
  193. Przy każdej cenie należy również podać identyfikator i nazwę towaru o tej cenie (może być kilka towarów o
  194. jednakowej cenie, należy je wszystkie uwzględnić).
  195.  
  196. select cat1.CategoryID, p1.productid, p1.productname, p1.UnitPrice "najwyzsza", '' "odstep",p2.productid, p2.productname, p2.UnitPrice "najnizsza" from categories cat1
  197. join products p1 on p1.CategoryID = cat1.CategoryID
  198. and p1.UnitPrice =
  199.     (select max (p.unitprice) "maks" from products p
  200.     join categories cat on cat.CategoryID = p.CategoryID
  201.     group by cat.CategoryID
  202.     having cat.CategoryID = cat1.categoryID)
  203.  
  204. join products p2 on p2.CategoryID = cat1.CategoryID
  205. and p2.UnitPrice =
  206.     (select min (p.unitprice) "mini" from products p
  207.     join categories cat on cat.CategoryID = p.CategoryID
  208.     group by cat.CategoryID
  209.     having cat.CategoryID = cat1.categoryID)
  210.  
  211.  
  212.  
  213.  
  214. Zadanie 22.
  215. Proszę wypisać trzy najwyższe ceny w tabeli Products. Proszę wykorzystać konstrukcję TOP 3.
  216. Czym różni się TOP 3 od TOP 3 WITH TIES?
  217.  
  218. WITH TIES spowoduje dołączenie do wynikowego zbioru danych wszystkich rekordów które mają takie same wartości jak
  219.  3 pierwsze po order by. czyli nie będzie 3 wierszy w top 3 with ties tylko będzie tyle wierszy ile wierszy ma 3 topowe wartości
  220.  
  221. select top 3 p.unitprice from products p
  222. order by p.UnitPrice desc
  223.  
  224. select top 3 with ties p.unitprice from products p
  225. order by p.UnitPrice desc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement