


Емае sql беда выручайте
Разработать информационную систему содержащую базу данных и клиентское приложение «Учет подписки на периодические печатные издания»
Создать БД. Список таблиц: издания, получатели, доставка
Список полей: фио подписчика, улица, номер дома, номер квартиры, индекс издания по каталогу, вид издания (газета или журнал), название издания, цена 1 экземпляра, дата начала подписки, срок подписки (количество месяцев).
Создать запросы:
Выбирает из таблиц информацию о подписчиках, проживающих на улице «Садовая», которые оформили подписку на издание с индексом «12123» (можно использовать другие название улицы и индекс).
Выбирает из таблицы ИЗДАНИЯ информацию обо всех изданиях, для которых цена 1 экземпляра есть значение из некоторого диапазона. Нижняя и верхняя границы диапазона задаются при выполнении запроса.
Создает таблицу ПОЛУЧАТЕЛИ_ИЗВЕСТИЯ, содержащую информацию о получателях издания с наименованием «Известия».
Увеличивает значение в поле Цена 1 экземпляра таблицы КОПИЯ_ ИЗДАНИЯ на 10 процентов для изданий, имеющих вид издания «газета».
Создать форму для вывода данных из таблицы доставка\
Создать форму для добавления нового издания
Разработать информационную систему содержащую базу данных и клиентское приложение «Учет сделок с недвижимостью»
Создать БД. Список таблиц: квартиры, риэлторы, сделки
Список полей: название улицы, номер дома, номер квартиры, площадь квартиры, количество комнат, дата сделки, цена квартиры, фио риэлтора, процент вознаграждения
Создать запросы:
Выбирает из таблицы КВАРТИРЫ информацию о 3-комнатных квартирах, расположенных на улице «Садовая».
Выбирает из таблицы КВАРТИРЫ информацию о квартирах с некоторым количеством комнат. Конкретное количество комнат вводится при выполнении запроса.
Выполняет группировку по полю Количество комнат. Для каждой группы вычисляет среднее значение по полю Площадь квартиры.
Создает таблицу КВАРТИРЫ_3_КОМН, содержащую информацию о 3-комнатных квартирах.
Создать форму для вывода данных из таблицы сделки
Создать форму для добавления новой квартиры
Разработать информационную систему содержащую базу данных и клиентское приложение «Учет договоров страхования»
Создать БД. Список таблиц: клиенты, страховые агенты, договоры
Список полей: фио клиента, процент скидки, вид страхования (страхование имущества, автомобиля, жизни и т.д.), тариф (зависит от вида страхования), сумма страхования, дата заключения договора, фамилия агента, имя агента, отчество агента,
процент вознаграждения
Создать запросы:
Выбирает из таблицы КЛИЕНТЫ информацию о клиентах с фамилией «Иванов».
Выбирает из таблицы АГЕНТЫ информацию о страховых агентах с некоторой фамилией. Фамилия вводится при выполнении запроса.
Выполняет группировку по полю Код агента в таблице ДОГОВОРЫ. Для каждой группы вычисляет среднее значение суммы страхования.
Создает копию таблицы АГЕНТЫ с именем КОПИЯ_АГЕНТЫ.
Создать форму для вывода данных из таблицы договоры
Создать форму для добавления нового клиента
Разработать информационную систему содержащую базу данных и клиентское приложение «Штатное расписание»
Создать БД. Список таблиц: подразделения, штатные единицы, распределение
штатных единиц
Список полей: название подразделения, тип подразделения (цех, отдел, бригада и т.д.), процент надбавки 1 (за вредные условия труда, зависит от подразделения, принимает значения от 0 до 100%), название должности, должностной оклад, процент надбавки 2 (за ненормированный рабочий день, устанавливается для конкретной штатной единицы от 0 до 100%), отпуск (количество дней отпуска в году, устанавливается для конкретной штатной единицы).
Создать запросы:
Выбирает из таблицы ПОДРАЗДЕЛЕНИЯ информацию о подразделениях, имеющих тип «отдел», для которых Процент надбавки 1 равен 50 %.
Выбирает из таблицы ПОДРАЗДЕЛЕНИЯ информацию о подразделениях, имеющих тип «цех», для которых Процент надбавки 1 имеет значение из некоторого заданного диапазона. Нижняя и верхняя границы диапазона задаются при выполнении запроса.
Выполняет группировку по полю Название штатной единицы в таблице ШТАТНЫЕ_ЕДИНИЦЫ. Для каждой группы вычисляет среднее значение оклада.
Создает копию таблицы ШТАТНЫЕ_ЕДИНИЦЫ с именем КОПИЯ_ ШТАТНЫЕ_ЕДИНИЦЫ.
Создать форму для вывода данных из таблицы распределение штатных единиц
Создать форму для добавления нового подразделения
Разработать информационную систему содержащую базу данных и клиентское приложение «Учет результатов сдачи вступительных экзаменов»
Создать БД. Список таблиц: абитуриенты, экзаменаторы, экзамены
Список полей: фио абитуриента, адрес, год рождения абитуриента, серия-номер паспорта абитуриента, фио экзаменатора, размер оплаты (за прием экзамена у одного абитуриента, может различаться для разных преподавателей), дата сдачи экзамена, название экзамена (история, математика и т.д.), оценка.
Создать запрос:
Выбирает из таблицы ЭКЗАМЕНАТОРЫ информацию об экзаменаторах, для которых установлен размер оплаты за прием одного экзамена от 30 до 50 руб.
Выбирает из таблиц АБИТУРИЕНТЫ, ЭКЗАМЕНАТОРЫ и ЭКЗАМЕНЫ информацию обо всех экзаменах (ФИО абитуриента, ФИО экзаменатора, Название экзамена, Дата сдачи экзамена, Оценка) в некоторый заданный интервал времени. Нижняя и верхняя границы интервала задаются при выполнении запроса.
Создает таблицу АБИТУРИЕНТЫ_1988, содержащую информацию об абитуриентах 1988 года рождения
Увеличивает значение в поле Размер оплаты таблицы КОПИЯ_ЭКЗАМЕНАТОРЫ на 10 процентов для экзаменаторов, размер оплаты у которых меньше 50 руб.
Создать форму для вывода данных из таблицы экзамены
Создать форму для добавления нового абитуриента
Часть 2
-- БИЛЕТ 18: Учет договоров страхования
USE master;
GO
IF DB_ID('ticket18') IS NOT NULL DROP DATABASE ticket18;
CREATE DATABASE ticket18;
USE ticket18;
GO
CREATE TABLE клиенты (
id_клиента INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
скидка DECIMAL(5,2) NOT NULL
);
CREATE TABLE агенты (
id_агента INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
процент DECIMAL(5,2) NOT NULL
);
CREATE TABLE договоры (
id_договора INT PRIMARY KEY IDENTITY,
id_клиента INT NOT NULL FOREIGN KEY REFERENCES клиенты(id_клиента),
id_агента INT NOT NULL FOREIGN KEY REFERENCES агенты(id_агента),
вид NVARCHAR(50) NOT NULL,
тариф DECIMAL(5,2) NOT NULL,
сумма DECIMAL(12,2) NOT NULL,
дата DATE NOT NULL
);
-- a. Агенты с вознаграждением 20-50%
SELECT * FROM агенты
WHERE процент BETWEEN 20 AND 50;
-- b. Договоры за период
SELECT
к.фио AS клиент,
д.вид,
д.сумма,
д.дата,
а.фио AS агент
FROM договоры д
JOIN клиенты к ON д.id_клиента = к.id_клиента
JOIN агенты а ON д.id_агента = а.id_агента
WHERE д.дата BETWEEN '2023-01-01' AND '2023-12-31';
-- c. VIP клиенты
SELECT * INTO vip_клиенты
FROM клиенты WHERE скидка = 0.5;
-- d. Удаление агентов в копии
SELECT * INTO копия_агенты FROM агенты;
DELETE FROM копия_агенты
WHERE процент > 30;
-- БИЛЕТ 19: Штатное расписание
USE master;
GO
IF DB_ID('ticket19') IS NOT NULL DROP DATABASE ticket19;
CREATE DATABASE ticket19;
USE ticket19;
GO
CREATE TABLE подразделения (
id_подразделения INT PRIMARY KEY IDENTITY,
название NVARCHAR(50) NOT NULL,
тип NVARCHAR(50) NOT NULL,
надбавка1 DECIMAL(5,2) NOT NULL
);
CREATE TABLE штатные_единицы (
id_единицы INT PRIMARY KEY IDENTITY,
должность NVARCHAR(50) NOT NULL,
оклад DECIMAL(10,2) NOT NULL,
надбавка2 DECIMAL(5,2) NOT NULL,
отпуск INT NOT NULL
);
CREATE TABLE распределение (
id_распределения INT PRIMARY KEY IDENTITY,
id_подразделения INT NOT NULL FOREIGN KEY REFERENCES подразделения(id_подразделения),
id_единицы INT NOT NULL FOREIGN KEY REFERENCES штатные_единицы(id_единицы)
);
-- a. Штатные единицы с окладом 3000-5000
SELECT * FROM штатные_единицы
WHERE оклад BETWEEN 3000 AND 5000;
-- b. Расчет зарплаты
SELECT
п.название AS подразделение,
ш.должность,
ш.оклад,
п.надбавка1,
ш.надбавка2,
(ш.оклад * (1 + п.надбавка1 + ш.надбавка2)) AS зарплата
FROM распределение р
JOIN подразделения п ON р.id_подразделения = п.id_подразделения
JOIN штатные_единицы ш ON р.id_единицы = ш.id_единицы;
-- c. Надбавки по типам подразделений
SELECT тип,
MIN(надбавка1) AS мин_надбавка,
MAX(надбавка1) AS макс_надбавка
FROM подразделения
GROUP BY тип;
-- d. Удаление в копии
SELECT * INTO копия_штатные_единицы FROM штатные_единицы;
DELETE FROM копия_штатные_единицы
WHERE надбавка2 > 50;
-- БИЛЕТ 20: Учет результатов экзаменов
USE master;
GO
IF DB_ID('ticket20') IS NOT NULL DROP DATABASE ticket20;
CREATE DATABASE ticket20;
USE ticket20;
GO
CREATE TABLE абитуриенты (
id_абитуриента INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
адрес NVARCHAR(100) NOT NULL,
год_рождения INT NOT NULL,
паспорт NVARCHAR(20) NOT NULL
);
CREATE TABLE экзаменаторы (
id_экзаменатора INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
оплата DECIMAL(8,2) NOT NULL
);
CREATE TABLE экзамены (
id_экзамена INT PRIMARY KEY IDENTITY,
id_абитуриента INT NOT NULL FOREIGN KEY REFERENCES абитуриенты(id_абитуриента),
id_экзаменатора INT NOT NULL FOREIGN KEY REFERENCES экзаменаторы(id_экзаменатора),
экзамен NVARCHAR(50) NOT NULL,
дата DATE NOT NULL,
оценка INT NOT NULL
);
-- a. Абитуриенты 1980-1990
SELECT * FROM абитуриенты
WHERE год_рождения BETWEEN 1980 AND 1990;
-- b. Расчет зарплаты экзаменатора
SELECT
э.фио,
экз.оплата,
эк.дата,
эк.экзамен,
(экз.оплата * 0.13) AS налог,
(экз.оплата * 0.87) AS зарплата
FROM экзамены эк
JOIN экзаменаторы экз ON эк.id_экзаменатора = экз.id_экзаменатора;
-- c. Средняя оценка по дисциплинам
SELECT экзамен, AVG(оценка) AS средняя_оценка
FROM экзамены
GROUP BY экзамен;
-- d. Удаление в копии
SELECT * INTO копия_экзаменаторы FROM экзаменаторы;
DELETE FROM копия_экзаменаторы
WHERE оплата > 100;
Часть 1
-- БИЛЕТ 16: Учет подписки
USE master;
GO
IF DB_ID('ticket16') IS NOT NULL DROP DATABASE ticket16;
CREATE DATABASE ticket16;
USE ticket16;
GO
CREATE TABLE издания (
id_издания INT PRIMARY KEY IDENTITY,
индекс NVARCHAR(20) NOT NULL,
вид NVARCHAR(20) NOT NULL,
название NVARCHAR(100) NOT NULL,
цена DECIMAL(10,2) NOT NULL
);
CREATE TABLE получатели (
id_получателя INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
улица NVARCHAR(50) NOT NULL,
дом NVARCHAR(10) NOT NULL,
квартира NVARCHAR(10)
);
CREATE TABLE доставка (
id_доставки INT PRIMARY KEY IDENTITY,
id_издания INT NOT NULL FOREIGN KEY REFERENCES издания(id_издания),
id_получателя INT NOT NULL FOREIGN KEY REFERENCES получатели(id_получателя),
дата_начала DATE NOT NULL,
срок INT NOT NULL
);
-- a. Газеты на букву П
SELECT * FROM издания
WHERE вид = 'газета' AND название LIKE 'П%';
-- b. Издание по индексу
SELECT * FROM издания
WHERE индекс = '12345';
-- c. Стоимость подписки
SELECT
и.индекс,
и.название,
и.цена,
д.дата_начала,
д.срок,
(и.цена * д.срок) AS стоимость
FROM доставка д
JOIN издания и ON д.id_издания = и.id_издания;
-- d. Копия изданий
SELECT * INTO копия_издания FROM издания;
-- БИЛЕТ 17: Учет сделок с недвижимостью
USE master;
GO
IF DB_ID('ticket17') IS NOT NULL DROP DATABASE ticket17;
CREATE DATABASE ticket17;
USE ticket17;
GO
CREATE TABLE квартиры (
id_квартиры INT PRIMARY KEY IDENTITY,
улица NVARCHAR(50) NOT NULL,
дом NVARCHAR(10) NOT NULL,
квартира NVARCHAR(10) NOT NULL,
площадь DECIMAL(8,2) NOT NULL,
комнаты INT NOT NULL
);
CREATE TABLE риэлторы (
id_риэлтора INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
процент DECIMAL(5,2) NOT NULL
);
CREATE TABLE сделки (
id_сделки INT PRIMARY KEY IDENTITY,
id_квартиры INT NOT NULL FOREIGN KEY REFERENCES квартиры(id_квартиры),
id_риэлтора INT NOT NULL FOREIGN KEY REFERENCES риэлторы(id_риэлтора),
дата DATE NOT NULL,
цена DECIMAL(12,2) NOT NULL
);
-- a. Риэлторы на И с вознаграждением >10%
SELECT * FROM риэлторы
WHERE фио LIKE 'И%' AND процент > 10;
-- b. 2-комнатные в диапазоне площади
SELECT * FROM квартиры
WHERE комнаты = 2 AND площадь BETWEEN 50 AND 70;
-- c. Комнаты по площади
SELECT площадь,
MIN(комнаты) AS мин_комнаты,
MAX(комнаты) AS макс_комнаты
FROM квартиры
GROUP BY площадь;
-- d. Копия квартир
SELECT * INTO копия_квартиры FROM квартиры;
-- БИЛЕТ 14: Учет нарушений ПДД
USE master;
GO
IF DB_ID('ticket14') IS NOT NULL DROP DATABASE ticket14;
CREATE DATABASE ticket14;
USE ticket14;
GO
CREATE TABLE автомобили (
id_авто INT PRIMARY KEY IDENTITY,
модель NVARCHAR(50) NOT NULL,
год INT NOT NULL,
номер NVARCHAR(15) NOT NULL,
стоимость DECIMAL(12,2) NOT NULL,
владелец NVARCHAR(100) NOT NULL,
паспорт NVARCHAR(20) NOT NULL
);
CREATE TABLE нарушения (
id_нарушения INT PRIMARY KEY IDENTITY,
вид NVARCHAR(100) NOT NULL,
штраф DECIMAL(8,2) NOT NULL
);
CREATE TABLE факты (
id_факта INT PRIMARY KEY IDENTITY,
id_авто INT NOT NULL FOREIGN KEY REFERENCES автомобили(id_авто),
id_нарушения INT NOT NULL FOREIGN KEY REFERENCES нарушения(id_нарушения),
дата DATE NOT NULL,
водитель NVARCHAR(100) NOT NULL
);
-- a. Автомобили по паспорту владельца
SELECT * FROM автомобили
WHERE паспорт LIKE '3%';
-- b. Нарушения за период
SELECT
ф.дата,
ф.водитель,
а.номер,
н.вид
FROM факты ф
JOIN автомобили а ON ф.id_авто = а.id_авто
JOIN нарушения н ON ф.id_нарушения = н.id_нарушения
WHERE ф.дата BETWEEN '2023-01-01' AND '2023-01-31';
-- c. Минимальная и максимальная стоимость по годам
SELECT год,
MIN(стоимость) AS мин_стоимость,
MAX(стоимость) AS макс_стоимость
FROM автомобили
GROUP BY год;
-- d. Удаление ВАЗ2112 в копии
SELECT * INTO копия_автомобили FROM автомобили;
DELETE FROM копия_автомобили
WHERE модель = 'ВАЗ2112';
-- БИЛЕТ 15: Туристическое агентство
USE master;
GO
IF DB_ID('ticket15') IS NOT NULL DROP DATABASE ticket15;
CREATE DATABASE ticket15;
USE ticket15;
GO
CREATE TABLE клиенты (
id_клиента INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
паспорт NVARCHAR(100) NOT NULL
);
CREATE TABLE маршруты (
id_маршрута INT PRIMARY KEY IDENTITY,
страна NVARCHAR(50) NOT NULL,
цель NVARCHAR(50) NOT NULL,
день DECIMAL(10,2) NOT NULL,
транспорт DECIMAL(10,2) NOT NULL,
виза DECIMAL(8,2) NOT NULL
);
CREATE TABLE поездки (
id_поездки INT PRIMARY KEY IDENTITY,
id_клиента INT NOT NULL FOREIGN KEY REFERENCES клиенты(id_клиента),
id_маршрута INT NOT NULL FOREIGN KEY REFERENCES маршруты(id_маршрута),
дата_начала DATE NOT NULL,
дни INT NOT NULL
);
-- a. Отдых до 1000 руб/день
SELECT * FROM маршруты
WHERE цель = 'отдых' AND день <= 1000;
-- b. Маршруты по цели
SELECT * FROM маршруты
WHERE цель = 'лечение';
-- c. Стоимость без НДС
SELECT
м.страна,
м.цель,
п.дата_начала,
п.дни,
(м.день * п.дни + м.транспорт + м.виза) AS стоимость
FROM поездки п
JOIN маршруты м ON п.id_маршрута = м.id_маршрута;
-- d. Удаление дорогих маршрутов в копии
SELECT * INTO копия_маршруты FROM маршруты;
DELETE FROM копия_маршруты
WHERE день > 2000;
-- БИЛЕТ 11: Платный прием в поликлинике
USE master;
GO
IF DB_ID('ticket11') IS NOT NULL DROP DATABASE ticket11;
CREATE DATABASE ticket11;
USE ticket11;
GO
CREATE TABLE врачи (
id_врача INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
специальность NVARCHAR(50) NOT NULL,
стоимость DECIMAL(8,2) NOT NULL,
процент DECIMAL(5,2) NOT NULL
);
CREATE TABLE пациенты (
id_пациента INT PRIMARY KEY IDENTITY,
фамилия NVARCHAR(50) NOT NULL,
имя NVARCHAR(50) NOT NULL,
отчество NVARCHAR(50),
рождение DATE NOT NULL,
адрес NVARCHAR(100)
);
CREATE TABLE прием (
id_приема INT PRIMARY KEY IDENTITY,
id_врача INT NOT NULL FOREIGN KEY REFERENCES врачи(id_врача),
id_пациента INT NOT NULL FOREIGN KEY REFERENCES пациенты(id_пациента),
дата_приема DATE NOT NULL
);
-- a. Пациенты до 1980 года
SELECT * FROM пациенты
WHERE рождение < '1980-01-01';
-- b. Приемы за период
SELECT
в.фио AS врач,
в.специальность,
п.дата_приема,
па.фамилия,
па.имя,
па.отчество
FROM прием п
JOIN врачи в ON п.id_врача = в.id_врача
JOIN пациенты па ON п.id_пациента = па.id_пациента
WHERE п.дата_приема BETWEEN '2023-05-01' AND '2023-05-31';
-- c. Максимальный процент по специальностям
SELECT специальность, MAX(процент) AS макс_процент
FROM врачи
GROUP BY специальность;
-- d. Копия врачей
SELECT * INTO копия_врачи FROM врачи;
-- БИЛЕТ 12: Прокат автомобилей
USE master;
GO
IF DB_ID('ticket12') IS NOT NULL DROP DATABASE ticket12;
CREATE DATABASE ticket12;
USE ticket12;
GO
CREATE TABLE клиенты (
id_клиента INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
серия NVARCHAR(10) NOT NULL,
номер NVARCHAR(10) NOT NULL
);
CREATE TABLE автомобили (
id_авто INT PRIMARY KEY IDENTITY,
модель NVARCHAR(50) NOT NULL,
цвет NVARCHAR(30) NOT NULL,
год INT NOT NULL,
номер NVARCHAR(15) NOT NULL,
стоимость DECIMAL(10,2) NOT NULL,
прокат_день DECIMAL(8,2) NOT NULL
);
CREATE TABLE прокат (
id_проката INT PRIMARY KEY IDENTITY,
id_клиента INT NOT NULL FOREIGN KEY REFERENCES клиенты(id_клиента),
id_авто INT NOT NULL FOREIGN KEY REFERENCES автомобили(id_авто),
дата_начала DATE NOT NULL,
дни INT NOT NULL
);
-- a. Автомобили до 1990 года
SELECT * FROM автомобили
WHERE год < 1990;
-- b. Прокат за период
SELECT
к.фио AS клиент,
а.модель,
а.номер,
п.дата_начала
FROM прокат п
JOIN клиенты к ON п.id_клиента = к.id_клиента
JOIN автомобили а ON п.id_авто = а.id_авто
WHERE п.дата_начала BETWEEN '2023-07-01' AND '2023-07-31';
-- c. Минимальная и максимальная стоимость по годам
SELECT год,
MIN(прокат_день) AS мин_цена,
MAX(прокат_день) AS макс_цена
FROM автомобили
GROUP BY год;
-- d. Копия автомобилей
SELECT * INTO копия_автомобили FROM автомобили;
-- БИЛЕТ 13: Учет оптовых продаж
USE master;
GO
IF DB_ID('ticket13') IS NOT NULL DROP DATABASE ticket13;
CREATE DATABASE ticket13;
USE ticket13;
GO
CREATE TABLE товары (
id_товара INT PRIMARY KEY IDENTITY,
наименование NVARCHAR(100) NOT NULL,
единица NVARCHAR(20) NOT NULL,
закупка DECIMAL(10,2) NOT NULL,
продажа DECIMAL(10,2) NOT NULL
);
CREATE TABLE продавцы (
id_продавца INT PRIMARY KEY IDENTITY,
фио NVARCHAR(100) NOT NULL,
процент DECIMAL(5,2) NOT NULL
);
CREATE TABLE продажи (
id_продажи INT PRIMARY KEY IDENTITY,
id_товара INT NOT NULL FOREIGN KEY REFERENCES товары(id_товара),
id_продавца INT NOT NULL FOREIGN KEY REFERENCES продавцы(id_продавца),
дата DATE NOT NULL,
количество INT NOT NULL
);
-- a. Товары в ценовом диапазоне
SELECT * FROM товары
WHERE закупка BETWEEN 100 AND 500;
-- b. Комиссионное вознаграждение
SELECT
п.дата,
пр.фио,
т.наименование,
т.продажа,
п.количество,
пр.процент,
(т.продажа п.количество пр.процент) AS вознаграждение
FROM продажи п
JOIN товары т ON п.id_товара = т.id_товара
JOIN продавцы пр ON п.id_продавца = пр.id_продавца;
-- c. Минимальное и максимальное количество по товарам
SELECT id_товара,
MIN(количество) AS мин_кол,
MAX(количество) AS макс_кол
FROM продажи
GROUP BY id_товара;
-- d. Удаление дорогих товаров в копии
SELECT * INTO копия_товары FROM товары;
DELETE FROM копия_товары
WHERE закупка > 1000;