Advertisement
JmihPodvalbniy

Untitled

Mar 24th, 2024 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 6.17 KB | Software | 0 0
  1. CREATE DATABASE School;
  2.  
  3. ---------------------------------------------------------------------------------------------------------------------------------------
  4. USE School;
  5.  
  6. CREATE TABLE Timepair (
  7.     id INT IDENTITY(1,1) PRIMARY KEY,
  8.     start_pair TIME NOT NULL,
  9.     end_pair TIME NOT NULL
  10. );
  11.  
  12. CREATE TABLE Class (
  13.     id INT IDENTITY(1,1) PRIMARY KEY,
  14.     name VARCHAR(200) NOT NULL
  15. );
  16.  
  17. CREATE TABLE Student (
  18.     id INT IDENTITY(1,1) PRIMARY KEY,
  19.     first_name VARCHAR(200) NOT NULL,
  20.     middle_name VARCHAR(200),
  21.     last_name VARCHAR(200) NOT NULL,
  22.     birthday DATETIME NOT NULL,
  23.     address VARCHAR(200)
  24. );
  25.  
  26. CREATE TABLE Student_in_class (
  27.     class INT REFERENCES Class(id),
  28.     student INT REFERENCES Student(id),
  29.     PRIMARY KEY (class, student)
  30. );
  31.  
  32. CREATE TABLE Teacher (
  33.     id INT IDENTITY(1,1) PRIMARY KEY,
  34.     first_name VARCHAR(200) NOT NULL,
  35.     middle_name VARCHAR(200),
  36.     last_name VARCHAR(200) NOT NULL
  37. );
  38.  
  39. CREATE TABLE Subject (
  40.     id INT IDENTITY(1,1) PRIMARY KEY,
  41.     name VARCHAR(200) NOT NULL
  42. );
  43.  
  44.  
  45. CREATE TABLE Schedule (
  46.     id INT IDENTITY(1,1) PRIMARY KEY,
  47.     DATE DATE NOT NULL,
  48.     class INT REFERENCES Class(id),
  49.     number_pair INT REFERENCES Timepair(id),
  50.     teacher INT REFERENCES Teacher(id),
  51.     subject INT REFERENCES Subject(id),
  52.     classroom INT NOT NULL
  53. );
  54.  
  55. ---------------------------------------------------------------------------------------------------------------------------------------
  56. USE School;
  57.  
  58. INSERT INTO Class (name)
  59. VALUES
  60. ('9A'),
  61. ('10B'),
  62. ('11A'),
  63. ('11B'),
  64. ('12A');
  65.  
  66. INSERT INTO Student (first_name, middle_name, last_name, birthday, address)
  67. VALUES
  68. ('Иван', 'Иванович', 'Иванов', '2005-01-01', 'ул. Ленина, 1'),
  69. ('Петр', 'Петрович', 'Петров', '2005-02-02', 'ул. Пушкина, 2'),
  70. ('Мария', 'Сергеевна', 'Сидорова', '2005-03-03', 'ул. Гоголя, 3'),
  71. ('Анна', 'Владимировна', 'Кузнецова', '2005-04-04', 'ул. Лермонтова, 4'),
  72. ('Дмитрий', 'Александрович', 'Волков', '2005-05-05', 'ул. Толстого, 5');
  73.  
  74. INSERT INTO Student_in_class (class, student)
  75. VALUES
  76. (1, 1),
  77. (1, 2),
  78. (2, 3),
  79. (2, 4),
  80. (3, 5);
  81.  
  82. INSERT INTO Teacher (first_name, middle_name, last_name)
  83. VALUES
  84. ('Павел', 'Петрович', 'Ромашкин'),
  85. ('Василий', 'Антонович', 'Колесников'),
  86. ('Мария', 'Степанова', 'Ваулина'),
  87. ('Таисия', 'Тимуровна', 'Жедринская'),
  88. ('Марина', 'Геннадьевна', 'Сосновская');
  89.  
  90. INSERT INTO Subject (name)
  91. VALUES
  92. ('Математика'),
  93. ('Русский язык'),
  94. ('Литература'),
  95. ('Физика'),
  96. ('Физкультура');
  97.  
  98. INSERT INTO Schedule (DATE, class, number_pair, teacher, subject, classroom)
  99. VALUES
  100. ('2019-09-02', 1, 1, 1, 1, 101),
  101. ('2019-09-02', 2, 2, 2, 2, 202),
  102. ('2023-10-27', 3, 3, 3, 3, 303),
  103. ('2023-10-27', 4, 4, 4, 4, 404),
  104. ('2023-10-28', 5, 5, 5, 5, 505);
  105.  
  106. INSERT INTO Timepair (start_pair, end_pair)
  107. VALUES
  108. ('08:00', '09:30'),
  109. ('09:40', '11:10'),
  110. ('11:20', '12:50'),
  111. ('13:00', '14:30'),
  112. ('14:40', '16:10');
  113.  
  114. ---------------------------------------------------------------------------------------------------------------------------------------
  115. #1) Сколько всего 10-ых классов?
  116. USE School;
  117.  
  118. SELECT COUNT(*) AS '10-е классы'
  119. FROM Class
  120. WHERE name LIKE '10%';
  121.  
  122. #2) Сколько различных кабинетов школы использовались 2.09.2019 в образовательных целях ?
  123. USE School;
  124.  
  125. SELECT COUNT(*) AS 'Кол-во классов'
  126. FROM Schedule
  127. WHERE DATE = '2019-09-02';
  128.  
  129. #3) Выведите информацию об обучающихся живущих на улице Пушкина (ul. Pushkina)?
  130. SELECT *
  131. FROM Student
  132. WHERE address LIKE N'%ул. Пушкина%';
  133.  
  134. #4) Сколько лет самому молодому обучающемуся ?
  135. SELECT MIN(DATEDIFF(YEAR, birthday, GETDATE ())) AS 'Самый молодой ученик'
  136. FROM Student;
  137.  
  138. #5) Выведите название предметов, которые преподает Ромашкин П.П. (Romashkin P.P.) ?
  139. SELECT name
  140. FROM Subject
  141. WHERE id = 1
  142.  
  143. #6) Во сколько начинается 4-ый учебный предмет по расписанию ?
  144. SELECT start_pair
  145. FROM Timepair
  146. WHERE id = 4
  147.  
  148. #7) Сколько времени обучающийся будет находиться в школе, учась со 2-го по 4-ый уч. предмет ?
  149. SELECT
  150.     CAST(SUM(DATEDIFF(MINUTE, Timepair.start_pair, Timepair.end_pair)) AS FLOAT) / 60 'Кол-во часов'
  151. FROM Schedule
  152. INNER JOIN Timepair ON Schedule.number_pair = Timepair.id
  153. WHERE Schedule.number_pair BETWEEN 2 AND 4;
  154.  
  155. #8) Выведите фамилии преподавателей, которые ведут физическую культуру (Physical Culture). Отсортируйте преподавателей по фамилии.
  156. USE School;
  157. SELECT Teacher.last_name AS 'Фамилия учителя'
  158. FROM Teacher
  159. JOIN Schedule ON Teacher.id = Schedule.teacher
  160. JOIN Subject ON Schedule.subject = Subject.id
  161. WHERE Subject.name = 'Физкультура'
  162. ORDER BY Teacher.last_name;
  163.  
  164. #9) Найдите максимальный возраст (колич. лет) среди обучающихся 10 классов ?
  165. SELECT MAX(DATEDIFF(YEAR, birthday, GETDATE())) AS 'Возраст'
  166. FROM Student
  167. WHERE id IN (
  168.     SELECT student
  169.     FROM Student_in_class
  170.     WHERE class IN (
  171.         SELECT id
  172.         FROM Class
  173.         WHERE name LIKE '10%'
  174.     )
  175. );
  176.  
  177. #10) В каких классах ведет занятия преподаватель "Krauze" ?
  178. SELECT Class.name AS 'Класс'
  179. FROM Class
  180. WHERE Class.id IN (
  181.     SELECT Schedule.class
  182.     FROM Schedule
  183.     WHERE Schedule.teacher = (
  184.         SELECT id
  185.         FROM Teacher
  186.         WHERE Teacher.last_name = 'Круз'
  187.     )
  188. );
  189. ---------------------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement