Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Смартфоны
+4

Вот вопрос из сложной ситуации с sql1

Разработать информационную систему содержащую базу данных и клиентское приложение «Платный прием в поликлинике»

  1. Создать БД. Список таблиц: врачи, пациенты, прием пациентов

Список полей: ФИО врача, специальность врача, стоимость приема, процент отчисления на зарплату, фамилия пациента, имя пациента, отчество пациента, дата рождения пациента, адрес пациента, дата приема

Создать запросы:

  1. Выбирает из таблицы ВРАЧИ информацию о врачах, имеющих конкретную специальность (например, хирург).

  2. Выбирает из таблицы ПАЦИЕНТЫ информацию о пациентах с заданной датой рождения. Дата рождения вводится при выполнении запроса.

  3. Выполняет группировку по полю Дата приема. Для каждой даты вычисляет среднюю стоимость приема.

Создает таблицу ВРАЧИ_ТЕРАПЕВТЫ, содержащую информацию о врачах-терапевтах.

По дате
По рейтингу
Аватар пользователя
Новичок

Вторая часть

-- БИЛЕТ 4: Учет нарушений ПДД

USE master;

GO

IF DB_ID('ticket4') IS NOT NULL DROP DATABASE ticket4;

GO

CREATE DATABASE ticket4;

GO

USE ticket4;

GO

-- Создание таблиц

CREATE TABLE автомобили (

    id_авто INT PRIMARY KEY IDENTITY(1,1),

    модель NVARCHAR(50) NOT NULL,

    год_выпуска INT NOT NULL,

    госномер NVARCHAR(15) NOT NULL UNIQUE,

    страховая_стоимость DECIMAL(12,2) NOT NULL,

    фио_владельца NVARCHAR(100) NOT NULL,

    паспорт_владельца NVARCHAR(20) NOT NULL

);

CREATE TABLE виды_нарушений (

    id_нарушения INT PRIMARY KEY IDENTITY(1,1),

    вид_нарушения NVARCHAR(100) NOT NULL,

    размер_штрафа DECIMAL(8,2) NOT NULL

);

CREATE TABLE факты_нарушений (

    id_факта INT PRIMARY KEY IDENTITY(1,1),

    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 год_выпуска = 2000;

-- b. Автомобиль по госномеру

SELECT * FROM автомобили WHERE госномер = 'В123ВС77';

-- c. Средняя страховая стоимость по моделям

SELECT

    модель,

    AVG(страховая_стоимость) AS средняя_стоимость

FROM автомобили

GROUP BY модель;

-- d. Создание таблицы дорогих автомобилей

SELECT * INTO дорогие_автомобили

FROM автомобили WHERE страховая_стоимость > 500000;

-- БИЛЕТ 5: Туристическое агентство

USE master;

GO

IF DB_ID('ticket5') IS NOT NULL DROP DATABASE ticket5;

GO

CREATE DATABASE ticket5;

GO

USE ticket5;

GO

-- Создание таблиц

CREATE TABLE клиенты (

    id_клиента INT PRIMARY KEY IDENTITY(1,1),

    фио_клиента NVARCHAR(100) NOT NULL,

    паспорт_данные NVARCHAR(100) NOT NULL

);

CREATE TABLE маршруты (

    id_маршрута INT PRIMARY KEY IDENTITY(1,1),

    страна 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(1,1),

    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 страна = 'Германия';

-- b. Поездки по длительности пребывания

SELECT

    клиенты.фио_клиента,

    маршруты.страна,

    маршруты.цель_поездки,

    поездки.дата_начала,

    поездки.количество_дней

FROM поездки

JOIN клиенты ON поездки.id_клиента = клиенты.id_клиента

JOIN маршруты ON поездки.id_маршрута = маршруты.id_маршрута

WHERE поездки.количество_дней BETWEEN 7 AND 14;

-- c. Минимальная и максимальная стоимость транспорта по странам

SELECT

    страна,

    MIN(транспортные_услуги) AS мин_транспорт,

    MAX(транспортные_услуги) AS макс_транспорт

FROM маршруты

GROUP BY страна;

-- d. Обновление стоимости для лечения (+10%)

SELECT * INTO копия_маршруты FROM маршруты;

UPDATE копия_маршруты

SET стоимость_дня = стоимость_дня * 1.1

WHERE цель_поездки = 'лечение';

Аватар пользователя
Новичок

Вот твои ответы

-- БИЛЕТ 1: Платный прием в поликлинике

USE master;

GO

IF DB_ID('ticket1') IS NOT NULL DROP DATABASE ticket1;

GO

CREATE DATABASE ticket1;

GO

USE ticket1;

GO

-- Создание таблиц

CREATE TABLE врачи (

    id_врача INT PRIMARY KEY IDENTITY(1,1),

    фио_врача NVARCHAR(100) NOT NULL,

    специальность NVARCHAR(50) NOT NULL,

    стоимость_приема DECIMAL(10,2) NOT NULL,

    процент_отчисления DECIMAL(5,2) NOT NULL

);

CREATE TABLE пациенты (

    id_пациента INT PRIMARY KEY IDENTITY(1,1),

    фамилия NVARCHAR(50) NOT NULL,

    имя NVARCHAR(50) NOT NULL,

    отчество NVARCHAR(50),

    дата_рождения DATE NOT NULL,

    адрес NVARCHAR(100)

);

CREATE TABLE прием_пациентов (

    id_приема INT PRIMARY KEY IDENTITY(1,1),

    id_врача INT NOT NULL FOREIGN KEY REFERENCES врачи(id_врача),

    id_пациента INT NOT NULL FOREIGN KEY REFERENCES пациенты(id_пациента),

    дата_приема DATE NOT NULL

);

-- Запросы

-- a. Врачи конкретной специальности

SELECT * FROM врачи WHERE специальность = 'хирург';

-- b. Пациенты по дате рождения

SELECT * FROM пациенты WHERE дата_рождения = '1990-01-01';

-- c. Средняя стоимость приема по датам

SELECT

    дата_приема,

    AVG(стоимость_приема) AS средняя_стоимость

FROM прием_пациентов

(тут мб инертал джойн) JOIN врачи ON прием_пациентов.id_врача = врачи.id_врача

GROUP BY дата_приема;

-- d. Создание таблицы врачей-терапевтов

SELECT * INTO врачи_терапевты

FROM врачи WHERE специальность = 'терапевт';

-- БИЛЕТ 2: Прокат автомобилей

USE master;

GO

IF DB_ID('ticket2') IS NOT NULL DROP DATABASE ticket2;

GO

CREATE DATABASE ticket2;

GO

USE ticket2;

GO

-- Создание таблиц

CREATE TABLE клиенты (

    id_клиента INT PRIMARY KEY IDENTITY(1,1),

    фио_клиента NVARCHAR(100) NOT NULL,

    серия_паспорта NVARCHAR(10) NOT NULL,

    номер_паспорта NVARCHAR(10) NOT NULL

);

CREATE TABLE автомобили (

    id_авто INT PRIMARY KEY IDENTITY(1,1),

    модель NVARCHAR(50) NOT NULL,

    цвет NVARCHAR(30) NOT NULL,

    год_выпуска INT NOT NULL,

    госномер NVARCHAR(15) NOT NULL UNIQUE,

    страховая_стоимость DECIMAL(12,2) NOT NULL,

    стоимость_дня_проката DECIMAL(8,2) NOT NULL

);

CREATE TABLE прокат (

    id_проката INT PRIMARY KEY IDENTITY(1,1),

    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 модель = 'ВАЗ-2110';

-- b. Автомобиль по госномеру

SELECT * FROM автомобили WHERE госномер = 'А001АА77';

-- c. Средняя страховая стоимость по моделям

SELECT

    модель,

    AVG(страховая_стоимость) AS средняя_стоимость

FROM автомобили

GROUP BY модель;

-- d. Создание таблицы старых автомобилей

SELECT * INTO старые_автомобили

FROM автомобили WHERE год_выпуска < 1995;

-- БИЛЕТ 3: Учет оптовых продаж

USE master;

GO

IF DB_ID('ticket3') IS NOT NULL DROP DATABASE ticket3;

GO

CREATE DATABASE ticket3;

GO

USE ticket3;

GO

-- Создание таблиц

CREATE TABLE товары (

    id_товара INT PRIMARY KEY IDENTITY(1,1),

    наименование 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(1,1),

    фио_продавца NVARCHAR(100) NOT NULL,

    процент_комиссионных DECIMAL(5,2) NOT NULL

);

CREATE TABLE продажи (

    id_продажи INT PRIMARY KEY IDENTITY(1,1),

    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 фио_продавца LIKE 'И%';

-- b. Факты продаж за период

SELECT

    продажи.дата_продажи,

    товары.наименование,

    товары.цена_закупки,

    товары.цена_продажи

FROM продажи

JOIN товары ON продажи.id_товара = товары.id_товара

WHERE продажи.дата_продажи BETWEEN '2023-01-01' AND '2023-12-31';

-- c. Средняя закупочная цена по товарам

SELECT

    наименование,

    AVG(цена_закупки) AS средняя_закупка

FROM товары

GROUP BY наименование;

-- d. Создание копии таблицы товаров

SELECT * INTO копия_товары FROM товары;

Аватар пользователя
Новичок

USE master;

GO

IF DB_ID('ticket1') IS NOT NULL DROP DATABASE ticket1;

GO

CREATE DATABASE ticket1;

GO

USE ticket1;

GO

-- Создание таблиц

CREATE TABLE врачи (

    id_врача INT PRIMARY KEY IDENTITY(1,1),

    фио_врача NVARCHAR(100) NOT NULL,

    специальность NVARCHAR(50) NOT NULL,

    стоимость_приема DECIMAL(10,2) NOT NULL,

    процент_отчисления DECIMAL(5,2) NOT NULL

);

CREATE TABLE пациенты (

    id_пациента INT PRIMARY KEY IDENTITY(1,1),

    фамилия NVARCHAR(50) NOT NULL,

    имя NVARCHAR(50) NOT NULL,

    отчество NVARCHAR(50),

    дата_рождения DATE NOT NULL,

    адрес NVARCHAR(100)

);

CREATE TABLE прием_пациентов (

    id_приема INT PRIMARY KEY IDENTITY(1,1),

    id_врача INT NOT NULL FOREIGN KEY REFERENCES врачи(id_врача),

    id_пациента INT NOT NULL FOREIGN KEY REFERENCES пациенты(id_пациента),

    дата_приема DATE NOT NULL

);

-- Запросы

-- a. Врачи конкретной специальности

SELECT * FROM врачи WHERE специальность = 'хирург';

-- b. Пациенты по дате рождения

SELECT * FROM пациенты WHERE дата_рождения = '1990-01-01';

-- c. Средняя стоимость приема по датам

SELECT

    дата_приема,

    AVG(стоимость_приема) AS средняя_стоимость

FROM прием_пациентов

(тут мб инертал джойн) JOIN врачи ON прием_пациентов.id_врача = врачи.id_врача

GROUP BY дата_приема;

-- d. Создание таблицы врачей-терапевтов

SELECT * INTO врачи_терапевты

FROM врачи WHERE специальность = 'терапевт';

Аватар пользователя
Новичок

-- Создание таблиц

CREATE TABLE врачи (

    id_врача INT PRIMARY KEY IDENTITY(1,1),

    фио_врача NVARCHAR(100) NOT NULL,

    специальность NVARCHAR(50) NOT NULL,

    стоимость_приема DECIMAL(10,2) NOT NULL,

    процент_отчисления DECIMAL(5,2) NOT NULL

);

CREATE TABLE пациенты (

    id_пациента INT PRIMARY KEY IDENTITY(1,1),

    фамилия NVARCHAR(50) NOT NULL,

    имя NVARCHAR(50) NOT NULL,

    отчество NVARCHAR(50),

    дата_рождения DATE NOT NULL,

    адрес NVARCHAR(100)

);

CREATE TABLE прием_пациентов (

    id_приема INT PRIMARY KEY IDENTITY(1,1),

    id_врача INT NOT NULL FOREIGN KEY REFERENCES врачи(id_врача),

    id_пациента INT NOT NULL FOREIGN KEY REFERENCES пациенты(id_пациента),

    дата_приема DATE NOT NULL

);

-- Запросы

-- a. Врачи конкретной специальности

SELECT * FROM врачи WHERE специальность = 'хирург';

-- b. Пациенты по дате рождения

SELECT * FROM пациенты WHERE дата_рождения = '1990-01-01';

-- c. Средняя стоимость приема по датам

SELECT

    дата_приема,

    AVG(стоимость_приема) AS средняя_стоимость

FROM прием_пациентов

(тут мб инертал джойн) JOIN врачи ON прием_пациентов.id_врача = врачи.id_врача

GROUP BY дата_приема;

-- d. Создание таблицы врачей-терапевтов

SELECT * INTO врачи_терапевты

FROM врачи WHERE специальность = 'терапевт';

Аватар пользователя
Ученик

USE master;

GO

IF DB_ID('ticket1') IS NOT NULL DROP DATABASE ticket1;

GO

CREATE DATABASE ticket1;

GO

USE ticket1;

GO



-- Создание таблиц

CREATE TABLE врачи (

id_врача INT PRIMARY KEY IDENTITY(1,1),

фио_врача NVARCHAR(100) NOT NULL,

специальность NVARCHAR(50) NOT NULL,

стоимость_приема DECIMAL(10,2) NOT NULL,

процент_отчисления DECIMAL(5,2) NOT NULL

);



CREATE TABLE пациенты (

id_пациента INT PRIMARY KEY IDENTITY(1,1),

фамилия NVARCHAR(50) NOT NULL,

имя NVARCHAR(50) NOT NULL,

отчество NVARCHAR(50),

дата_рождения DATE NOT NULL,

адрес NVARCHAR(100)

);



CREATE TABLE прием_пациентов (

id_приема INT PRIMARY KEY IDENTITY(1,1),

id_врача INT NOT NULL FOREIGN KEY REFERENCES врачи(id_врача),

id_пациента INT NOT NULL FOREIGN KEY REFERENCES пациенты(id_пациента),

дата_приема DATE NOT NULL