Загрузка данных
Билет №19
Предметная область: Прокат автомобилей
Таблицы: автомобили, филиалы, клиенты, договоры аренды, страховые случаи.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Прокат автомобилей
CREATE TABLE branches ( -- филиалы
branch_id INT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
city VARCHAR(60) NOT NULL
);
CREATE TABLE cars ( -- автомобили
car_id INT PRIMARY KEY,
model VARCHAR(80) NOT NULL,
plate VARCHAR(15) NOT NULL UNIQUE,
branch_id INT NOT NULL,
day_price DECIMAL(8,2) NOT NULL CHECK (day_price > 0),
FOREIGN KEY (branch_id) REFERENCES branches(branch_id)
);
CREATE TABLE clients ( -- клиенты
client_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
license_no VARCHAR(20) NOT NULL UNIQUE
);
CREATE TABLE rent_contracts ( -- договоры аренды
contract_id INT PRIMARY KEY,
car_id INT NOT NULL,
client_id INT NOT NULL,
start_date DATE NOT NULL,
days INT NOT NULL CHECK (days > 0),
FOREIGN KEY (car_id) REFERENCES cars(car_id),
FOREIGN KEY (client_id) REFERENCES clients(client_id)
);
CREATE TABLE insurance_cases ( -- страховые случаи
case_id INT PRIMARY KEY,
contract_id INT NOT NULL,
description VARCHAR(200) NOT NULL,
damage DECIMAL(10,2) NOT NULL,
FOREIGN KEY (contract_id) REFERENCES rent_contracts(contract_id)
);
INSERT INTO branches VALUES
(1,'Центральный','Вологда'),(2,'Северный','Вологда'),(3,'Привокзальный','Череповец'),
(4,'Аэропорт','Москва'),(5,'Южный','Ярославль');
INSERT INTO cars VALUES
(1,'Kia Rio','А001АА35',1,2500),
(2,'Lada Vesta','В002ВВ35',1,2000),
(3,'Hyundai Solaris','С003СС35',2,2400),
(4,'Toyota Camry','Т004ТТ35',4,5000),
(5,'Renault Logan','Р005РР35',3,2100);
INSERT INTO clients VALUES
(1,'Антонов Лев','77 111111'),(2,'Белова Ия','77 222222'),
(3,'Власов Ким','77 333333'),(4,'Гущин Ян','77 444444'),(5,'Дёмина Аня','77 555555');
INSERT INTO rent_contracts VALUES
(1,1,1,'2025-03-01',5),(2,4,2,'2025-03-03',3),(3,2,3,'2025-03-05',7),
(4,3,4,'2025-03-08',2),(5,5,5,'2025-03-10',4);
INSERT INTO insurance_cases VALUES
(1,2,'Скол лобового стекла',8000),(2,3,'Царапина на двери',5000),
(3,1,'Прокол колеса',2000);
-- Запросы
-- 1) Выборка с условием: автомобили дороже 2300 руб./сутки
SELECT model, day_price FROM cars WHERE day_price > 2300;
-- 2) Соединение: договор, автомобиль и клиент
SELECT rc.contract_id, c.model, cl.full_name, rc.days
FROM rent_contracts rc JOIN cars c ON rc.car_id = c.car_id
JOIN clients cl ON rc.client_id = cl.client_id;
-- 3) Группировка: количество машин в каждом филиале
SELECT b.name, COUNT(c.car_id) AS cars_cnt
FROM branches b LEFT JOIN cars c ON b.branch_id = c.branch_id
GROUP BY b.name;
-- 4) Подзапрос: договоры, по которым были страховые случаи
SELECT contract_id, days FROM rent_contracts
WHERE contract_id IN (SELECT contract_id FROM insurance_cases);
-- 5) Обновление: поднять суточную цену в филиале 'Аэропорт' на 10%
UPDATE cars SET day_price = day_price * 1.10
WHERE branch_id = (SELECT branch_id FROM branches WHERE name = 'Аэропорт');
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система проката автомобилей учитывает филиалы, машины, клиентов, договоры и страховые случаи. Заполните филиалы и автомобили, зарегистрируйте клиентов. Договор фиксирует машину, клиента и срок аренды; при ущербе оформляется страховой случай. Запрос с группировкой показывает парк по филиалам.
Билет №20
Предметная область: Ветеринарная клиника
Таблицы: владельцы, питомцы, ветеринары, приемы, вакцинации.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Ветеринарная клиника
CREATE TABLE owners ( -- владельцы
owner_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
phone VARCHAR(20) NOT NULL
);
CREATE TABLE vets ( -- ветеринары
vet_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
specialty VARCHAR(80) NOT NULL
);
CREATE TABLE pets ( -- питомцы
pet_id INT PRIMARY KEY,
name VARCHAR(60) NOT NULL,
species VARCHAR(40) NOT NULL,
owner_id INT NOT NULL,
birth_year INT,
FOREIGN KEY (owner_id) REFERENCES owners(owner_id)
);
CREATE TABLE appointments ( -- приемы
appt_id INT PRIMARY KEY,
pet_id INT NOT NULL,
vet_id INT NOT NULL,
appt_date DATE NOT NULL,
reason VARCHAR(150),
FOREIGN KEY (pet_id) REFERENCES pets(pet_id),
FOREIGN KEY (vet_id) REFERENCES vets(vet_id)
);
CREATE TABLE vaccinations ( -- вакцинации
vacc_id INT PRIMARY KEY,
pet_id INT NOT NULL,
vaccine VARCHAR(80) NOT NULL,
vacc_date DATE NOT NULL,
FOREIGN KEY (pet_id) REFERENCES pets(pet_id)
);
INSERT INTO owners VALUES
(1,'Антонова Лена','+7906-001'),(2,'Белов Ким','+7906-002'),
(3,'Власова Ия','+7906-003'),(4,'Гущин Ян','+7906-004'),(5,'Дёмин Лев','+7906-005');
INSERT INTO vets VALUES
(1,'Егорова Зоя','терапевт'),(2,'Жуков Тим','хирург'),
(3,'Зорина Аня','дерматолог'),(4,'Исаев Влад','стоматолог'),(5,'Котова Майя','офтальмолог');
INSERT INTO pets VALUES
(1,'Барсик','кот',1,2020),(2,'Рекс','собака',2,2019),(3,'Кеша','попугай',3,2022),
(4,'Мухтар','собака',4,2018),(5,'Мурка','кошка',5,2021);
INSERT INTO appointments VALUES
(1,1,1,'2025-03-10','Прививка'),(2,2,2,'2025-03-11','Осмотр лапы'),
(3,3,3,'2025-03-12','Перья'),(4,4,1,'2025-03-13','Профосмотр'),
(5,1,4,'2025-03-15','Зубы');
INSERT INTO vaccinations VALUES
(1,1,'Бешенство','2025-03-10'),(2,2,'Комплексная','2025-02-01'),
(3,4,'Бешенство','2025-01-15'),(4,5,'Комплексная','2025-03-01'),
(5,1,'Лептоспироз','2025-03-20');
-- Запросы
-- 1) Выборка с условием: питомцы-собаки
SELECT name, species FROM pets WHERE species = 'собака';
-- 2) Соединение: прием, питомец и ветеринар
SELECT a.appt_date, p.name AS pet, v.full_name AS vet, a.reason
FROM appointments a JOIN pets p ON a.pet_id = p.pet_id
JOIN vets v ON a.vet_id = v.vet_id;
-- 3) Группировка: число приемов по каждому ветеринару
SELECT v.full_name, COUNT(a.appt_id) AS appts
FROM vets v LEFT JOIN appointments a ON v.vet_id = a.vet_id
GROUP BY v.full_name;
-- 4) Подзапрос: питомцы, которым делали вакцинацию
SELECT name FROM pets WHERE pet_id IN (SELECT pet_id FROM vaccinations);
-- 5) Обновление: изменить причину приема appt_id=3
UPDATE appointments SET reason = 'Выпадение перьев' WHERE appt_id = 3;
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система ветклиники учитывает владельцев, ветеринаров, питомцев, приемы и вакцинации. Зарегистрируйте владельцев и ветеринаров, заведите питомцев. Прием связывает питомца и врача, вакцинации фиксируются отдельно. Запрос с группировкой показывает нагрузку ветеринаров.
Билет №21
Предметная область: Продажа билетов на концерты и фестивали
Таблицы: площадки, мероприятия, артисты, зрители, проданные билеты.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Продажа билетов на концерты и фестивали
CREATE TABLE venues ( -- площадки
venue_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
city VARCHAR(60) NOT NULL,
capacity INT NOT NULL CHECK (capacity > 0)
);
CREATE TABLE artists ( -- артисты
artist_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
genre VARCHAR(50) NOT NULL
);
CREATE TABLE events ( -- мероприятия
event_id INT PRIMARY KEY,
name VARCHAR(120) NOT NULL,
venue_id INT NOT NULL,
artist_id INT NOT NULL,
event_date DATE NOT NULL,
FOREIGN KEY (venue_id) REFERENCES venues(venue_id),
FOREIGN KEY (artist_id) REFERENCES artists(artist_id)
);
CREATE TABLE spectators ( -- зрители
spectator_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
email VARCHAR(100)
);
CREATE TABLE sold_tickets ( -- проданные билеты
ticket_id INT PRIMARY KEY,
event_id INT NOT NULL,
spectator_id INT NOT NULL,
price DECIMAL(8,2) NOT NULL,
FOREIGN KEY (event_id) REFERENCES events(event_id),
FOREIGN KEY (spectator_id) REFERENCES spectators(spectator_id)
);
INSERT INTO venues VALUES
(1,'Дворец спорта','Вологда',5000),(2,'Парк культуры','Череповец',3000),
(3,'Концертный зал','Москва',1500),(4,'Стадион','Ярославль',20000),(5,'Клуб Drive','Вологда',800);
INSERT INTO artists VALUES
(1,'Группа Север','рок'),(2,'DJ Pulse','электроника'),(3,'Хор Лира','классика'),
(4,'Рэп-проект М','хип-хоп'),(5,'Джаз-бэнд','джаз');
INSERT INTO events VALUES
(1,'Рок-фест 2025',1,1,'2025-05-10'),(2,'Электро-ночь',5,2,'2025-05-12'),
(3,'Вечер классики',3,3,'2025-05-15'),(4,'Хип-хоп шоу',4,4,'2025-05-20'),
(5,'Джаз в парке',2,5,'2025-05-22');
INSERT INTO spectators VALUES
(1,'Антонов Ян','an@mail.ru'),(2,'Белова Ия','be@mail.ru'),
(3,'Власов Лев','vl@mail.ru'),(4,'Гущина Аня','gu@mail.ru'),(5,'Дёмин Ким','de@mail.ru');
INSERT INTO sold_tickets VALUES
(1,1,1,1500),(2,1,2,1500),(3,2,3,1200),(4,4,4,2000),(5,1,5,1800);
-- Запросы
-- 1) Выборка с условием: площадки вместимостью более 3000
SELECT name, capacity FROM venues WHERE capacity > 3000;
-- 2) Соединение: мероприятие, площадка и артист
SELECT e.name AS event, v.name AS venue, a.name AS artist, e.event_date
FROM events e JOIN venues v ON e.venue_id = v.venue_id
JOIN artists a ON e.artist_id = a.artist_id;
-- 3) Группировка: выручка по каждому мероприятию
SELECT e.name, SUM(st.price) AS revenue
FROM events e LEFT JOIN sold_tickets st ON e.event_id = st.event_id
GROUP BY e.name;
-- 4) Подзапрос: артисты, у которых есть мероприятия с проданными билетами
SELECT name FROM artists WHERE artist_id IN
(SELECT artist_id FROM events WHERE event_id IN (SELECT event_id FROM sold_tickets));
-- 5) Обновление: поднять цену билетов на 'Рок-фест 2025' на 200 руб.
UPDATE sold_tickets SET price = price + 200
WHERE event_id = (SELECT event_id FROM events WHERE name = 'Рок-фест 2025');
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система продажи билетов на концерты и фестивали. Заполните площадки и артистов, создайте мероприятия. Зрители покупают билеты на мероприятия. Запрос с группировкой считает выручку по каждому мероприятию.
Билет №22
Предметная область: Салон красоты и парикмахерская
Таблицы: мастера, клиенты, услуги, записи на прием, чеки об оплате.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Салон красоты и парикмахерская
CREATE TABLE masters ( -- мастера
master_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
position VARCHAR(60) NOT NULL
);
CREATE TABLE services ( -- услуги
service_id INT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
price DECIMAL(8,2) NOT NULL CHECK (price > 0),
duration INT NOT NULL
);
CREATE TABLE clients ( -- клиенты
client_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
phone VARCHAR(20) NOT NULL
);
CREATE TABLE appointments ( -- записи на прием
appt_id INT PRIMARY KEY,
client_id INT NOT NULL,
master_id INT NOT NULL,
service_id INT NOT NULL,
appt_time DATETIME NOT NULL,
FOREIGN KEY (client_id) REFERENCES clients(client_id),
FOREIGN KEY (master_id) REFERENCES masters(master_id),
FOREIGN KEY (service_id) REFERENCES services(service_id)
);
CREATE TABLE receipts ( -- чеки об оплате
receipt_id INT PRIMARY KEY,
appt_id INT NOT NULL,
amount DECIMAL(8,2) NOT NULL,
pay_date DATE NOT NULL,
FOREIGN KEY (appt_id) REFERENCES appointments(appt_id)
);
INSERT INTO masters VALUES
(1,'Антонова Лена','парикмахер'),(2,'Белова Ия','маникюрист'),
(3,'Власова Зоя','косметолог'),(4,'Гущина Аня','визажист'),(5,'Дёмина Майя','парикмахер');
INSERT INTO services VALUES
(1,'Стрижка женская',1200,60),(2,'Маникюр',900,90),(3,'Окрашивание',3000,120),
(4,'Чистка лица',2000,80),(5,'Макияж',1500,60);
INSERT INTO clients VALUES
(1,'Егорова Ника','+7907-001'),(2,'Жукова Роза','+7907-002'),
(3,'Зорина Оля','+7907-003'),(4,'Исаева Вера','+7907-004'),(5,'Котова Инна','+7907-005');
INSERT INTO appointments VALUES
(1,1,1,1,'2025-04-01 10:00'),(2,2,2,2,'2025-04-01 11:00'),
(3,3,3,4,'2025-04-02 12:00'),(4,4,5,3,'2025-04-02 14:00'),(5,1,4,5,'2025-04-03 16:00');
INSERT INTO receipts VALUES
(1,1,1200,'2025-04-01'),(2,2,900,'2025-04-01'),(3,3,2000,'2025-04-02'),
(4,4,3000,'2025-04-02'),(5,5,1500,'2025-04-03');
-- Запросы
-- 1) Выборка с условием: услуги дороже 1500 руб.
SELECT name, price FROM services WHERE price > 1500;
-- 2) Соединение: запись, клиент, мастер и услуга
SELECT a.appt_time, cl.full_name AS client, m.full_name AS master, s.name AS service
FROM appointments a JOIN clients cl ON a.client_id = cl.client_id
JOIN masters m ON a.master_id = m.master_id
JOIN services s ON a.service_id = s.service_id;
-- 3) Группировка: выручка по каждому мастеру
SELECT m.full_name, SUM(r.amount) AS revenue
FROM masters m JOIN appointments a ON m.master_id = a.master_id
JOIN receipts r ON a.appt_id = r.appt_id
GROUP BY m.full_name;
-- 4) Подзапрос: услуги, которые хотя бы раз заказывали
SELECT name FROM services WHERE service_id IN (SELECT service_id FROM appointments);
-- 5) Обновление: поднять цену услуги 'Окрашивание' на 10%
UPDATE services SET price = price * 1.10 WHERE name = 'Окрашивание';
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система салона красоты учитывает мастеров, услуги, клиентов, записи и чеки. Заполните мастеров и услуги, зарегистрируйте клиентов. Запись связывает клиента, мастера и услугу; оплата фиксируется чеком. Запрос с группировкой считает выручку по мастерам.
Билет №23
Предметная область: Строительная компания и управление проектами
Таблицы: объекты строительства, прорабы, строительные материалы, сметы, этапы работ.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Строительная компания и управление проектами
CREATE TABLE objects_build ( -- объекты строительства
object_id INT PRIMARY KEY,
name VARCHAR(120) NOT NULL,
address VARCHAR(150) NOT NULL,
deadline DATE NOT NULL
);
CREATE TABLE foremen ( -- прорабы
foreman_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
phone VARCHAR(20) NOT NULL
);
CREATE TABLE materials ( -- строительные материалы
material_id INT PRIMARY KEY,
name VARCHAR(80) NOT NULL,
unit VARCHAR(20) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
CREATE TABLE estimates ( -- сметы
estimate_id INT PRIMARY KEY,
object_id INT NOT NULL,
material_id INT NOT NULL,
qty DECIMAL(10,2) NOT NULL CHECK (qty > 0),
FOREIGN KEY (object_id) REFERENCES objects_build(object_id),
FOREIGN KEY (material_id) REFERENCES materials(material_id)
);
CREATE TABLE work_stages ( -- этапы работ
stage_id INT PRIMARY KEY,
object_id INT NOT NULL,
foreman_id INT NOT NULL,
name VARCHAR(100) NOT NULL,
status VARCHAR(30) NOT NULL DEFAULT 'план',
FOREIGN KEY (object_id) REFERENCES objects_build(object_id),
FOREIGN KEY (foreman_id) REFERENCES foremen(foreman_id)
);
INSERT INTO objects_build VALUES
(1,'ЖК Радуга','ул. Ленина, 100','2026-06-01'),
(2,'ТЦ Меридиан','пр. Победы, 50','2025-12-15'),
(3,'Школа №5','ул. Школьная, 7','2026-08-30'),
(4,'Мост','наб. Реки','2027-01-20'),
(5,'Склад','промзона, 3','2025-09-10');
INSERT INTO foremen VALUES
(1,'Антонов Лев','+7908-001'),(2,'Белов Ким','+7908-002'),
(3,'Власов Ян','+7908-003'),(4,'Гущин Тим','+7908-004'),(5,'Дёмин Влад','+7908-005');
INSERT INTO materials VALUES
(1,'Цемент М500','мешок',420),(2,'Кирпич','шт',18),(3,'Арматура 12мм','тонна',65000),
(4,'Песок','тонна',900),(5,'Бетон М300','м3',4500);
INSERT INTO estimates VALUES
(1,1,1,500),(2,1,3,12),(3,2,2,50000),(4,3,5,200),(5,4,3,40);
INSERT INTO work_stages VALUES
(1,1,1,'Фундамент','выполнен'),(2,1,1,'Стены','в работе'),
(3,2,2,'Каркас','план'),(4,3,3,'Кровля','план'),(5,4,4,'Опоры','в работе');
-- Запросы
-- 1) Выборка с условием: материалы дороже 1000 руб.
SELECT name, price FROM materials WHERE price > 1000;
-- 2) Соединение: смета — объект и материал с количеством
SELECT o.name AS object, m.name AS material, e.qty, m.unit
FROM estimates e JOIN objects_build o ON e.object_id = o.object_id
JOIN materials m ON e.material_id = m.material_id;
-- 3) Группировка: стоимость материалов по каждому объекту
SELECT o.name, SUM(m.price * e.qty) AS total_cost
FROM estimates e JOIN objects_build o ON e.object_id = o.object_id
JOIN materials m ON e.material_id = m.material_id
GROUP BY o.name;
-- 4) Подзапрос: объекты, по которым есть этапы в работе
SELECT name FROM objects_build WHERE object_id IN
(SELECT object_id FROM work_stages WHERE status = 'в работе');
-- 5) Обновление: отметить этап stage_id=3 как 'в работе'
UPDATE work_stages SET status = 'в работе' WHERE stage_id = 3;
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система строительной компании ведет объекты, прорабов, материалы, сметы и этапы работ. Заведите объекты и прорабов, справочник материалов. Смета связывает объект и материалы с количеством, этапы работ закрепляются за прорабом. Запрос с группировкой считает стоимость материалов по объектам.
Билет №24
Предметная область: Успеваемость учеников средней школы
Таблицы: классы, учителя, ученики, школьные предметы, журнал оценок.
Решение (SQL-скрипт: создание таблиц, тестовые данные, запросы)
-- Предметная область: Успеваемость учеников средней школы
CREATE TABLE classes ( -- классы
class_id INT PRIMARY KEY,
name VARCHAR(10) NOT NULL UNIQUE,
year_in INT NOT NULL
);
CREATE TABLE teachers ( -- учителя
teacher_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
subject VARCHAR(60) NOT NULL
);
CREATE TABLE subjects ( -- школьные предметы
subject_id INT PRIMARY KEY,
name VARCHAR(60) NOT NULL UNIQUE,
teacher_id INT NOT NULL,
FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id)
);
CREATE TABLE pupils ( -- ученики
pupil_id INT PRIMARY KEY,
full_name VARCHAR(120) NOT NULL,
class_id INT NOT NULL,
FOREIGN KEY (class_id) REFERENCES classes(class_id)
);
CREATE TABLE grade_journal ( -- журнал оценок
record_id INT PRIMARY KEY,
pupil_id INT NOT NULL,
subject_id INT NOT NULL,
grade INT NOT NULL CHECK (grade BETWEEN 2 AND 5),
grade_date DATE NOT NULL,
FOREIGN KEY (pupil_id) REFERENCES pupils(pupil_id),
FOREIGN KEY (subject_id) REFERENCES subjects(subject_id)
);
INSERT INTO classes VALUES
(1,'9А',2016),(2,'9Б',2016),(3,'10А',2015),(4,'11А',2014),(5,'8В',2017);
INSERT INTO teachers VALUES
(1,'Антонова Лена','Математика'),(2,'Белов Ким','Физика'),
(3,'Власова Зоя','Русский язык'),(4,'Гущин Ян','История'),(5,'Дёмина Аня','Информатика');
INSERT INTO subjects VALUES
(1,'Математика',1),(2,'Физика',2),(3,'Русский язык',3),
(4,'История',4),(5,'Информатика',5);
INSERT INTO pupils VALUES
(1,'Егоров Тим',1),(2,'Жукова Ия',1),(3,'Зорин Лев',2),
(4,'Исаева Аня',3),(5,'Котов Влад',4);
INSERT INTO grade_journal VALUES
(1,1,1,5,'2025-03-01'),(2,1,2,4,'2025-03-02'),(3,2,1,3,'2025-03-01'),
(4,3,5,5,'2025-03-03'),(5,4,3,4,'2025-03-04');
-- Запросы
-- 1) Выборка с условием: отличные оценки (5)
SELECT pupil_id, grade, grade_date FROM grade_journal WHERE grade = 5;
-- 2) Соединение: ученик, предмет и оценка
SELECT p.full_name, s.name AS subject, gj.grade
FROM grade_journal gj JOIN pupils p ON gj.pupil_id = p.pupil_id
JOIN subjects s ON gj.subject_id = s.subject_id;
-- 3) Группировка: средний балл по каждому ученику
SELECT p.full_name, AVG(gj.grade) AS avg_grade
FROM pupils p JOIN grade_journal gj ON p.pupil_id = gj.pupil_id
GROUP BY p.full_name;
-- 4) Подзапрос: ученики класса '9А'
SELECT full_name FROM pupils WHERE class_id =
(SELECT class_id FROM classes WHERE name = '9А');
-- 5) Обновление: исправить оценку record_id=3 на 4
UPDATE grade_journal SET grade = 4 WHERE record_id = 3;
Задание 4. Краткое руководство пользователя
Руководство пользователя. Система учитывает успеваемость учеников школы. Заполните классы и учителей, закрепите предметы за учителями, внесите учеников по классам. Оценки заносятся в журнал. Запрос с группировкой считает средний балл по ученикам.