Advertisement
S_Madanska

3.11.22

Nov 3rd, 2022
1,003
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.87 KB | None | 0 0
  1. --#1
  2. --Изведете имената на държавите, които не са свързани с никой регион.
  3. SELECT * FROM COUNTRIES
  4. WHERE REGION_ID IS NULL
  5.  
  6.  
  7. --#2
  8. --На коя длъжност (като название) са назначени най-много служители?
  9. SELECT TOP 1 JOB_TITLE, COUNT(EMPLOYEE_ID) служител
  10. FROM JOBS J JOIN EMPLOYEES E
  11. ON E.JOB_ID = J.JOB_ID
  12. GROUP BY JOB_TITLE, J.JOB_ID
  13. ORDER BY 2 DESC
  14.  
  15.  
  16. --#3
  17. --Кои типове продукти са се продали в общо количество над 1500 бр.?
  18. --Изведете техните имена и съответното общо количество.
  19. SELECT P.NAME, SUM(QUANTITY)'общо количество '
  20. FROM ORDER_ITEMS OI JOIN PRODUCTS P
  21. ON OI.PRODUCT_ID = P.PRODUCT_ID
  22. GROUP BY P.NAME, P.PRODUCT_ID
  23. HAVING SUM(QUANTITY) > 1500
  24.  
  25.  
  26. --#4
  27. --Изведете дата на продажба, броя на клиентите, направили покупки на тази дата,
  28. --броя на служителите, изпълнили тези продажби, броя на продажбите
  29. --и общата стойност на продажбите.
  30.  
  31. SELECT CAST(ORDER_DATE AS DATE)    'ДАТА НА ПРОДАЖБА',
  32.        COUNT(DISTINCT CUSTOMER_ID) 'БРОЙ КЛИЕНТИ',
  33.        COUNT(DISTINCT EMPLOYEE_ID) 'БРОЙ СЛУЖИТЕЛИ',
  34.        COUNT(DISTINCT OI.ORDER_ID) 'БРОЙ ПРОДАЖБИ',
  35.        SUM(UNIT_PRICE*QUANTITY)    'ОБЩА СТОЙНОСТ'
  36. FROM ORDERS O FULL JOIN ORDER_ITEMS OI
  37. ON OI.ORDER_ID  = O.ORDER_ID
  38. GROUP BY CAST(ORDER_DATE AS DATE)
  39.  
  40. --проверка:
  41. SELECT *
  42. FROM ORDERS O  JOIN ORDER_ITEMS OI
  43. ON OI.ORDER_ID  = O.ORDER_ID
  44. WHERE CAST(ORDER_DATE AS DATE)= '2000-02-12'
  45.  
  46.  
  47. --#5
  48. --Изведете имената и телефонните номера на всички служители, които започват с 0878.
  49.  SELECT FNAME, LNAME, PHONE
  50.  FROM EMPLOYEES
  51.  WHERE PHONE LIKE '0878%' -- WILDCARDS   % _
  52.  
  53.  
  54. --#6
  55. --Изведете имена на клиенти, чиито адрес включва бул. Марица (без значение от номера) Пловдив.
  56.  SELECT FNAME, LNAME, ADDRESS
  57.  FROM CUSTOMERS
  58.  WHERE ADDRESS LIKE '%бул.%Марица%Пловдив%'
  59.  
  60.  
  61. --#7
  62. --Изведете служителите (с техните имена и заплати),
  63. --получаващи по-голяма заплата от Матея Маврова
  64. SELECT E.FNAME, E.LNAME, E.SALARY
  65. FROM EMPLOYEES E JOIN EMPLOYEES MM
  66. ON E.SALARY > MM.SALARY
  67. WHERE MM.FNAME = 'Матея' AND MM.LNAME = 'Маврова'
  68.  
  69. SELECT * FROM EMPLOYEES
  70. WHERE FNAME = 'Матея' AND LNAME = 'Маврова'
  71.  
  72. SELECT *
  73. FROM EMPLOYEES
  74. WHERE SALARY > 7500
  75.  
  76.  
  77. --#8
  78. --Изведете име, цена от Products и реална цена, на която са продадени продуктите.
  79. --Нека цената, на която са продадени бъде по-голяма от средната в Products
  80. --цена на всички продукти.
  81.  
  82. SELECT * FROM PRODUCTS
  83. WHERE PRODUCT_ID = 1791
  84.  
  85. SELECT * FROM ORDER_ITEMS
  86. WHERE PRODUCT_ID = 1791
  87.  
  88. SELECT DISTINCT P.NAME, P.PRICE, OI.UNIT_PRICE
  89. FROM PRODUCTS P JOIN ORDER_ITEMS OI
  90. ON P.PRODUCT_ID = OI.PRODUCT_ID
  91. WHERE OI.UNIT_PRICE > (SELECT AVG(PRICE) FROM PRODUCTS)
  92.  
  93.  
  94. --#9
  95. --Изведете имената и заплатите (с форматиране за българска валута)
  96. --на всеки един служител. Сортирайте по залплата в низходящ ред.
  97.  
  98.  SELECT FNAME, LNAME , FORMAT(SALARY, 'C', 'BG-BG' )  заплати
  99.  FROM EMPLOYEES
  100.  ORDER BY 3 DESC
  101.  
  102.  
  103. --#10
  104. -- Изведете имената на продуктите, единичната им цена, идентификаторите на поръчките
  105. -- и датите, на които са направени. Но нека резултатния набор включва само тези от тях,
  106. -- които са след 10.01.2018 г. Сортирайте по дата във възходящ ред.  
  107. -- Забележка:
  108. -- нека ден, месец и година бъдат разпределени в отделни колони, а месецът
  109. -- да бъде представен с думи.
  110. SELECT GETDATE()
  111.  
  112. SELECT P.NAME, OI.UNIT_PRICE,
  113.        OI.ORDER_ID,
  114.        DAY(ORDER_DATE) ДЕН,
  115.        DATENAME(MONTH, ORDER_DATE) МЕСЕЦ,
  116.        YEAR(ORDER_DATE) ГОДИНА
  117. FROM ORDERS O JOIN ORDER_ITEMS  OI ON OI.ORDER_ID = O.ORDER_ID
  118.               JOIN PRODUCTS P ON P.PRODUCT_ID = OI.PRODUCT_ID
  119. WHERE CAST (ORDER_DATE AS DATE) >'2018-10-01'
  120. ORDER BY ORDER_DATE ASC
  121.  
  122.  
  123. --#11
  124. --Изведете разликата в години на първата и последната поръчка на фирамата.
  125.  SELECT MIN(ORDER_DATE) FROM ORDERS
  126.  SELECT MAX(ORDER_DATE) FROM ORDERS
  127.  
  128.  SELECT DATEDIFF(YEAR, MIN(ORDER_DATE), MAX(ORDER_DATE)) FROM ORDERS
  129.  
  130.  
  131. --#12
  132. --Изведете данните за клиентите, пазарували на 27.07.2017 г.
  133. SELECT *
  134. FROM CUSTOMERS C JOIN ORDERS O
  135. ON C.CUSTOMER_ID = O.CUSTOMER_ID
  136. WHERE CAST (O.ORDER_DATE AS DATE) = '2017-07-27'
  137.  
  138.  
  139. --#13
  140. --Изведете клиентите, които са поръчвали през 2000 година.
  141. SELECT *
  142. FROM CUSTOMERS C JOIN ORDERS O
  143. ON C.CUSTOMER_ID = O.CUSTOMER_ID
  144. WHERE YEAR(O.ORDER_DATE) = 2000
  145.  
  146.  
  147. --#14
  148. --Изведете клиентите, които са поръчали само веднъж.
  149. --Сортирайте по малко име във възходящ ред.
  150. SELECT FNAME, LNAME, C.CUSTOMER_ID, COUNT(ORDER_ID)
  151. FROM CUSTOMERS C JOIN ORDERS O
  152. ON C.CUSTOMER_ID = O.CUSTOMER_ID
  153. GROUP BY  FNAME, LNAME, C.CUSTOMER_ID
  154. HAVING COUNT(ORDER_ID) = 1
  155.  
  156.  
  157. --#15
  158. --Изведете минималната заплата на длъжностите, в които има назначени повече от 10 служителя.
  159.  SELECT MIN_SALARY, JOB_TITLE, COUNT(EMPLOYEE_ID)
  160.  FROM EMPLOYEES E JOIN JOBS J
  161.  ON J.JOB_ID = E.JOB_ID
  162.  GROUP BY MIN_SALARY, JOB_TITLE
  163.  HAVING COUNT(EMPLOYEE_ID)  > 10
  164.  
  165.  
  166. --#16.
  167. --Изведете длъжностите, на които няма назначени служители.
  168.  SELECT MIN_SALARY, JOB_TITLE, COUNT(EMPLOYEE_ID)
  169.  FROM EMPLOYEES E RIGHT JOIN JOBS J
  170.  ON J.JOB_ID = E.JOB_ID
  171.  GROUP BY MIN_SALARY, JOB_TITLE
  172.  HAVING COUNT(EMPLOYEE_ID)  = 0
  173.  
  174.  SELECT MIN_SALARY, JOB_TITLE
  175.  FROM EMPLOYEES E RIGHT JOIN JOBS J
  176.  ON J.JOB_ID = E.JOB_ID
  177.  WHERE EMPLOYEE_ID IS NULL
  178.  
  179.  
  180. --#17.
  181. --Изведете име, фамилия и пол на клиентите, направили последните 5 поръчки.
  182. SELECT TOP 5 FNAME, LNAME, GENDER, ORDER_ID
  183. FROM CUSTOMERS C  JOIN ORDERS O
  184. ON O.CUSTOMER_ID = C.CUSTOMER_ID
  185. ORDER BY ORDER_DATE DESC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement