Advertisement
fevzi02

SQl 3lab

Jun 14th, 2022
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.16 KB | None | 0 0
  1. # Создайте запрос, включающий наборы, вес и цена которых превышают
  2. # соответственно 375 г. и 150 рублей.
  3.  
  4. 1) SELECT * FROM наборы as p
  5. where p.Вес > 375
  6. AND p.Стоимость > 150
  7. --------------------------------------------------------------------------------
  8. # Создайте запрос, который выдает список наборов стоимостью от 100 рублей до
  9. # 150 рублей, число которых на складе превышает 500 штук.
  10.  
  11. 2) SELECT * FROM наборы as p
  12. where p.Стоимость >= 100
  13. AND p.Стоимость < 150
  14. AND p.Количество > 500
  15. --------------------------------------------------------------------------------
  16. # Создайте простой запрос, перечисляющий заказчиков новогодних наборов,
  17. # размещенных с 10 по 25 декабря.
  18.  
  19. 3) SELECT * FROM заказы as p
  20. where p.ДатаЗаказа > "2012-12-10"
  21. AND p.ДатаЗаказа < "2012-12-25"
  22.  
  23. SELECT заказчики.Фамилия AS "Фамилия", заказы.ДатаЗаказа AS "Дата Заказа"
  24. From заказы
  25. JOIN заказчики
  26. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  27. where заказы.ДатаЗаказа > "2012-12-10"
  28. AND заказы.ДатаЗаказа < "2012-12-25";
  29.  
  30. SELECT заказчики.Фамилия AS "Фамилия", заказы.ДатаЗаказа AS "Дата Заказа"
  31. From заказы
  32. JOIN заказчики
  33. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  34. where заказы.ДатаЗаказа > "2012-12-10"
  35. AND заказы.ДатаЗаказа < "2012-12-25"
  36. AND заказы.ПодарочныйВариант="Новогодний набор";
  37. --------------------------------------------------------------------------------
  38. # Создайте запрос, перечисляющий заказчиков подарочных наборов и даты их
  39. # заказов.
  40.  
  41. 4) SELECT заказчики.Фамилия AS "Фамилия", заказы.ДатаЗаказа AS "Дата Заказа"
  42. From заказы
  43. JOIN заказчики
  44. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  45.  
  46. SELECT заказчики.Фамилия AS "Фамилия", заказы.ДатаЗаказа AS "Дата Заказа"
  47. From заказы
  48. JOIN заказчики
  49. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  50. where заказы.ПодарочныйВариант="Праздничный набор";
  51. ***********************************************************************
  52. --------------------------------------------------------------------------------
  53. # Включите в запрос 3 суммарную стоимость заказа.
  54.  
  55. 5) SELECT заказчики.Фамилия AS "Фамилия", заказы.ДатаЗаказа AS "Дата Заказа", sum(наборы.Стоимость) AS "Сумма"
  56. From заказы
  57. JOIN заказчики
  58. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  59. JOIN наборы
  60. ON наборы.КодНабора=заказы.КодНабора
  61. where заказы.ДатаЗаказа > "2012-12-10"
  62. AND заказы.ДатаЗаказа < "2012-12-25"
  63. AND заказы.ПодарочныйВариант="Новогодний набор"
  64. GROUP BY заказчики.Фамилия, заказы.ДатаЗаказа;
  65. --------------------------------------------------------------------------------
  66. # Сохраните результат работы запроса 1 в отдельную таблицу с названием
  67. # «Дорогие подарки»
  68.  
  69. 6) CREATE TABLE ДорогиеПодарки
  70. (
  71. SELECT * FROM наборы as p
  72. where p.Вес > 375
  73. AND p.Стоимость > 150
  74. )
  75. --------------------------------------------------------------------------------
  76. # Создайте запрос, подсчитывающий общее количество заказов для каждого
  77. # заказчика
  78.  
  79. 7) SELECT заказчики.КодЗаказчика, заказчики.Фамилия, count(*) AS "Kоличество заказов"
  80. FROM заказы
  81. JOIN заказчики
  82. ON заказы.КодЗаказчика=заказчики.КодЗаказчика
  83. GROUP BY заказчики.КодЗаказчика, заказчики.Фамилия;
  84. --------------------------------------------------------------------------------
  85. # Получите все наборы, которые были заказаны заказчиком с кодом 44.
  86.  
  87. 8) SELECT КодЗаказчика, ПодарочныйВариант
  88. FROM заказы
  89. WHERE КодЗаказчика=44
  90. GROUP BY ПодарочныйВариант;
  91.  
  92. SELECT наборы.КодНабора AS "Код Набора"
  93. FROM наборы
  94. JOIN заказы
  95. ON наборы.КодНабора=заказы.КодНабора
  96.  
  97. SELECT КодНабора
  98. FROM заказы as з
  99. WHERE з.КодЗаказчика = 44
  100.  
  101. --------------------------------------------------------------------------------
  102. # Получить названия всех наборов из прошлого запроса
  103.  
  104. SELECT DISTINCT заказы.КодНабора AS "Код Набора", наборы.Название
  105. FROM наборы
  106. JOIN заказы
  107. ON наборы.КодНабора=заказы.КодНабора
  108. WHERE заказы.КодЗаказчика = 44
  109.  
  110. SELECT DISTINCT ПодарочныйВариант
  111. FROM заказы
  112. WHERE КодЗаказчика=44
  113. ;
  114.  
  115. _==============================================================================__
  116. _==============================================================================__
  117. _==============================================================================__
  118. _==============================================================================__
  119. _==============================================================================__
  120. _==============================================================================__
  121. _==============================================================================__
  122. _==============================================================================__
  123.  
  124. 1)Создайте запрос на выборку данных о работниках.
  125.  
  126. SELECT * FROM работники;
  127.  
  128. -------------------------
  129. 2)Создайте запрос на выборку данных о работниках, которые назначены на ремонт зданий.
  130.  
  131. SELECT * FROM работники
  132. JOIN назначение
  133. WHERE (работники.Код_работника=назначение.Код_работника);
  134.  
  135. -------------------------
  136. 3)Создайте запрос на выборку данных о работниках, которые назначены на ремонт зданий с кодом 6990
  137.  
  138. SELECT * FROM работники
  139. JOIN назначение
  140. WHERE (работники.Код_работника=назначение.Код_работника AND Назначение.Код_здания=6990);
  141.  
  142. -------------------------
  143. 4)Создайте запрос на выборку данных о зданиях, ремонт которых начат после 01.01.2020 и закончен до 01.12.2021 года.
  144. SELECT * FROM здание
  145. WHERE (Дата_начала>'2020-01-01'
  146. AND Дата_начала<'2021-12-01');
  147.  
  148. -------------------------
  149. 5)Дополните предыдущий запрос информацией об окончании ремонта зданий ( `Дата окончания` = `Дата начала` + `Число недель` * 7 ).
  150. SELECT *, DATE_ADD(Дата_начала, INTERVAL Число_недель_ремонта * 7 DAY) AS 'Дата окончания' FROM здание
  151. WHERE (Дата_начала>'2020-01-01'
  152. AND Дата_начала<'2021-12-01');
  153.  
  154. -------------------------
  155. 6)В предыдущем запросе даты выведите в формате DD-MM-YYYY . (В MySQL для этого используйте функцию DATE_FORMAT.
  156. SELECT *, DATE_FORMAT(DATE_ADD(Дата_начала, INTERVAL Число_недель_ремонта * 7 DAY),'%D-%M-%Y') AS 'Дата окончания' FROM здание
  157. WHERE (Дата_начала>'2020-01-01'
  158. AND Дата_начала<'2021-12-01');
  159.  
  160. -------------------------
  161. 7)Создайте запрос для получения информации о часовой ставке работников задаваемой специальности, например каменщика.
  162. SELECT Часовая_ставка
  163. FROM специальность
  164. WHERE Специальность='Каменщик'
  165.  
  166. -------------------------
  167. 8)Извлечь из таблицы Здание и таблицы Назначение данные о зданиях, ремонт
  168. которых должен начаться в 2001 году и работников, которых назначают на ремонт
  169. этого здания. Полученные данные перенести в новую таблицу Перспектива.
  170.  
  171. CREATE TABLE Перспектива
  172. (Код_здания int not null,
  173. Адрес CHAR(30),
  174. Тип_здания CHAR(20),
  175. Уровень_качества CHAR(5),
  176. Дата_начала date,
  177. Число_недель_ремонта int,
  178. Код_работника int not null,
  179. PRIMARY KEY (Код_здания, Код_работника));
  180.  
  181. INSERT
  182. INTO Перспектива (Код_здания, Адрес, Тип_здания, Уровень_качества, Дата_начала, Число_недель_ремонта, Код_работника)
  183. SELECT здание.Код_здания, здание.Адрес, здание.Тип_здания, здание.Уровень_качества, здание.Дата_начала, здание.Число_недель_ремонта, назначение.Код_работника
  184. FROM здание
  185. JOIN назначение
  186. ON здание.Код_здания = назначение.Код_здания
  187. WHERE здание.Дата_начала>'2020-01-01'
  188.  
  189. -------------------------
  190. 9)Получить зарплату каждого работника, которая рассчитывается как 8*`Число
  191. дней`*`Почасовая ставка`+`Премиальные`.
  192. SELECT работники.Имя, работники.Код_работника, 8 * работники.Число_дней * специальность.Часовая_ставка + специальность.Премиальные AS 'Зарплата'
  193. FROM работники
  194. JOIN специальность
  195. ON работники.Специальность = специальность.Специальность
  196.  
  197. -------------------------
  198. 10)Сохранить результат этого запроса в таблицу Зарплата.
  199. CREATE TABLE Зарплата
  200. (Имя CHAR(20),
  201. Код_работника int not null,
  202. Зарплата int,
  203. PRIMARY KEY (Код_работника));
  204.  
  205. INSERT
  206. INTO Зарплата (Имя, Код_работника, Зарплата)
  207. SELECT работники.Имя, работники.Код_работника, 8 * работники.Число_дней * специальность.Часовая_ставка + специальность.Премиальные
  208. FROM работники
  209. JOIN специальность
  210. ON работники.Специальность = специальность.Специальность;
  211. -------------------------
  212. 11)
  213.  
  214. -------------------------
  215. 12)
  216.  
  217. -------------------------
  218. 13)
  219.  
  220. -------------------------
  221. 14)
  222.  
  223. -------------------------
  224. 15)
  225.  
  226. -------------------------
  227. 16)
  228.  
  229. -------------------------
  230.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement