Advertisement
JmihPodvalbniy

Untitled

Mar 20th, 2024 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.15 KB | Software | 0 0
  1. CREATE DATABASE Family;
  2. -----------------------
  3.  
  4. USE Family
  5. CREATE TABLE FamilyMembers(
  6.     member_id INT IDENTITY(1,1) PRIMARY KEY,
  7.     STATUS VARCHAR(100) NOT NULL,
  8.     member_name VARCHAR(200) NOT NULL,
  9.     birthday DATETIME NOT NULL
  10. );
  11.  
  12. CREATE TABLE GoodTypes(
  13.     good_type_id INT IDENTITY(1,1) PRIMARY KEY,
  14.     good_type_name VARCHAR(300) NOT NULL
  15. );
  16.  
  17. CREATE TABLE Goods(
  18.     good_id INT IDENTITY(1,1) PRIMARY KEY,
  19.     good_name VARCHAR(300) NOT NULL,
  20.     good_type INT FOREIGN KEY REFERENCES GoodTypes(good_type_id) ON UPDATE CASCADE ON DELETE CASCADE
  21.     );
  22.  
  23. CREATE TABLE Payments(
  24.     payment_id INT IDENTITY(1,1) PRIMARY KEY,
  25.     family_member INT FOREIGN KEY REFERENCES FamilyMembers(member_id) ON UPDATE CASCADE ON DELETE CASCADE,
  26.     good INT FOREIGN KEY REFERENCES Goods(good_id) ON UPDATE CASCADE ON DELETE CASCADE,
  27.     amount INT NOT NULL,
  28.     unit_price INT NOT NULL,
  29.     DATE DATETIME NOT NULL
  30. );
  31. ----------------------------
  32.  
  33. USE Family
  34. INSERT INTO FamilyMembers (STATUS,member_name,birthday)
  35. VALUES ('father','Headley Quincey','1960-05-13T00:00:00.000Z'),
  36.        ('mother','Flavia Quincey','1960-05-13T00:00:00.000Z'),
  37.        ('son','Andie Quincey','1983-06-05T00:00:00.000Z'),
  38.        ('daughter','Lela Quincey','1985-06-07T00:00:00.000Z'),
  39.        ('daughter','Annie Quincey','1988-04-10T00:00:00.000Z'),
  40.        ('father','Ernest Forrest','1961-09-11T00:00:00.000Z'),
  41.        ('mother','Constance Forrest','1968-09-06T00:00:00.000Z'),
  42.        ('daughter','Wednesday Addams','2005-01-13T00:00:00.000Z');
  43.  
  44.  
  45. INSERT INTO GoodTypes (good_type_name)
  46. VALUES ('communal payments'),
  47.        ('food'),
  48.        ('delicacies'),
  49.        ('entertainment'),
  50.        ('treatment'),
  51.        ('education'),
  52.        ('clothes'),
  53.        ('equipment');
  54.  
  55. INSERT INTO Goods (good_name,good_type)
  56. VALUES ('apartment fee', 1),
  57.        ('phone fee', 1),
  58.        ('bread', 2),
  59.        ('milk', 2),
  60.        ('red caviar', 3),
  61.        ('cinema', 4),
  62.        ('blасk caviar', 3),
  63.        ('cough tablets', 5),
  64.        ('potato', 2),
  65.        ('pineapples', 3);
  66.  
  67. INSERT INTO Payments (DATE,family_member,good,amount,unit_price)
  68. VALUES ('2005-02-12T00:00:00.000Z', 1, 1, 1, 2000),
  69.        ('2005-03-23T00:00:00.000Z', 2, 1, 1, 2100),
  70.        ('2005-05-14T00:00:00.000Z', 3, 4, 5, 20),
  71.        ('2005-07-22T00:00:00.000Z', 4, 5, 1, 350),
  72.        ('2005-06-26T00:00:00.000Z', 4, 7, 2, 150),
  73.        ('2005-02-20T00:00:00.000Z', 5, 6, 1, 100),
  74.        ('2005-06-30T00:00:00.000Z', 2, 6, 1, 120),
  75.        ('2005-09-12T00:00:00.000Z', 2, 9, 1, 55),
  76.        ('2005-09-30T00:00:00.000Z', 5, 2, 1, 230),
  77.        ('2005-10-27T00:00:00.000Z', 5, 9, 1, 230);
  78. ----------------------------
  79. #1) Найти имена всех матерей (mother)
  80. USE Family
  81.  
  82. SELECT member_name AS 'имена всех матерей'
  83. FROM FamilyMembers
  84. WHERE STATUS = 'mother'
  85.  
  86. #2) Определить, кто из членов семьи покупал картошку (potato)
  87. USE Family
  88.  
  89. SELECT DISTINCT member_name AS 'Все кто купил potato:'
  90. FROM FamilyMembers
  91. INNER JOIN Payments
  92. ON Payments.family_member = FamilyMembers.member_id
  93. INNER JOIN Goods
  94. ON Goods.good_id = Payments.good
  95. WHERE Goods.good_name = 'potato'
  96.  
  97. #3) Измените имя "Andie Quincey" на новое "Andie Anthony".
  98. USE Family
  99.  
  100. UPDATE FamilyMembers
  101. SET member_name = 'Andie Anthony'
  102. WHERE member_name = 'Andie Quincey'
  103.  
  104. #4) Определить, сколько потратил в 2005 году каждый из членов семьи. В результирующей выборке не выводите тех членов семьи, которые ничего не потратили.
  105. USE Family
  106.  
  107. SELECT member_name,  
  108. SUM(amount * unit_price)
  109. FROM Payments
  110. INNER JOIN FamilyMembers
  111. ON Payments.family_member = FamilyMembers.member_id
  112. WHERE DATE BETWEEN '2005-01-01T00:00:00.000Z' AND '2005-12-31T00:00:00.000Z'
  113. GROUP BY member_name
  114.  
  115. #5) Выведите имя самого старшего человека. Если таких несколько, то выведите их всех.
  116. USE Family
  117.  
  118. SELECT member_name AS 'имена самых старших людей'
  119. FROM FamilyMembers
  120. WHERE birthday = (SELECT MIN(birthday) FROM FamilyMembers)
  121.  
  122.  
  123. #6) Сколько и кто из семьи потратил на развлечения (entertainment). Вывести статус в семье, имя, сумму
  124. USE Family
  125.  
  126. SELECT STATUS, member_name, SUM(amount * unit_price) AS 'сумма'
  127. FROM FamilyMembers
  128. INNER JOIN Payments
  129. ON Payments.family_member = FamilyMembers.member_id
  130. INNER JOIN Goods
  131. ON Payments.good = Goods.good_id
  132. INNER JOIN GoodTypes
  133. ON GoodTypes.good_type_id = Goods.good_type
  134. WHERE good_type_name = 'entertainment'
  135. GROUP BY member_name, STATUS
  136.  
  137. #7) Найдите самый дорогой деликатес (delicacies) и выведите его цену
  138. USE Family
  139.  
  140. SELECT TOP(1) good_name, unit_price
  141. FROM Goods
  142. INNER JOIN GoodTypes
  143. ON GoodTypes.good_type_id = Goods.good_type
  144. INNER JOIN Payments
  145. ON Payments.good = Goods.good_id
  146. WHERE unit_price IN (SELECT unit_price FROM Payments WHERE good_type_name = 'delicacies')
  147. ORDER BY unit_price DESC
  148.  
  149. #8) Определить кто и сколько потратил в июне 2005
  150. USE Family
  151.  
  152. SELECT good_name AS 'Не проданные товары'
  153. FROM Goods
  154. WHERE Goods.good_id NOT IN (SELECT good FROM Payments)
  155.  
  156. #9) Определить, какие товары не покупались в 2005 году
  157. USE Family
  158.  
  159. SELECT good_name AS 'Не проданные товары'
  160. FROM Goods
  161. WHERE Goods.good_id NOT IN (SELECT good FROM Payments)
  162.  
  163. #10) Вывести всех членов семьи с фамилией Quincey.
  164. USE Family
  165.  
  166. SELECT member_name
  167. FROM FamilyMembers
  168. WHERE member_name LIKE '%Quincey'
  169.  
  170. #11) Удалить всех членов семьи с фамилией "Quincey".
  171. USE Family
  172.  
  173. DELETE
  174. FROM FamilyMembers
  175. WHERE member_name LIKE '%Quincey'
  176.  
  177. #12) Вывести имена всех пассажиров, которые полетели из Москвы в Ростов (по БД из предыдущей домашки)
  178. USE AA;
  179. SELECT DISTINCT name
  180. FROM Passenger
  181. JOIN Trip
  182. ON Passenger.id_product=Trip.id
  183. WHERE town_from = 'Moscow' AND town_to = 'Rostov'
  184. ------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement