Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чурилов / 4 курс / Базы_данных_Чурилов_Z9411_КР(2).docx
Скачиваний:
11
Добавлен:
10.11.2024
Размер:
539.36 Кб
Скачать

2 Составление требуемых запросов к базе данных

В среде MySQL Workbench была создана база данных, а также описанные выше таблицы с атрибутами, в каждую таблицу были введены данные. Создание базы данных представлено в листинге 1.

Листинг 1 – Создание базы данных

create database Ad;

Были написаны запросы к базе данных.

Запрос 1 предоставляет суммарную продолжительность показа роликов рекламодателей. Запрос 1 представлен в листинге 2, а результат его выполнения на рисунке 8.

Листинг 2 – Запрос 1

select customer.customer_id as CustomerName, count(contract.ad_id)*ad.ad_duration as Showing from ad, contract, customer where contract.ad_id = ad.ad_id and contract.customer_id = customer.customer_id group by customer.customer_id;

Рисунок 8 – Результат выполнения запроса 1

Запрос 2 предоставляет сведения о фамилии агента, который заключил наиболее выгодные рекламному агентству договора относительно всех заказчиков. Представлен в листинге 3, а результат на рисунке 9.

Листинг 3 – Запрос 2

select agent.Agent_LastName as Name, sum(contract.contract_price) as MaxPrice from contract, agent where contract.agent_id = agent.agent_id group by contract.agent_id, contract.customer_id order by MaxPrice desc limit 1;

Рисунок 9 – Результат выполнения запроса 2

Запрос 3 выдает количество рекламных роликов, показывающих в будние дни. Запрос представлен в листинге 4, а результат выполнения на рисунке 10.

Листинг 4 – Запрос 3

select count(contract.contract_id) as CountOfAd from contract, tv_show where contract.tv_id = tv_show.tv_id and (contract.tv_id = 200 or contract.tv_id = 700 or contract.tv_id = 1500 or contract.tv_id = 2000);

Рисунок 10 – Результат выполнения запроса 3

Запрос 4 показывает зарплату агентов за время существования компании. Запрос представлен в листинге 5, а результат выполнения на рисунке 11.

Листинг 5 – Запрос 4

select agent.agent_lastname as AgentName, sum(contract.contract_price*agent.agent_percent/100) as Salary from contract, agent where contract.agent_id = agent.agent_id group by agent.agent_lastname;

Рисунок 11 – Результат выполнения запроса 4

Запрос 5 выводит организацию, заказавшую рекламу в самой рейтинговой передаче. Запрос представлен в листинге 6, а результат выполнения на рисунке 12.

Листинг 6 – Запрос 5

select contract.customer_id as Customer, contract.contract_price as Price, tv_show.tv_rating as Rating from contract, tv_show where contract.tv_id = tv_show.tv_id order by tv_show.tv_rating desc limit 1;

Рисунок 12 – Результат выполнения запроса 5

Запрос 6 выводит информацию о контактном лице организации, заключившей наибольшее количество договоров о рекламе Запрос представлен в листинге 7, а результат выполнения на рисунке 13.

Листинг 7 – Запрос 6

select customer.customer_contactperson as ContactPerson, count(contract.customer_id) as Counter from contract, customer where customer.customer_id = contract.customer_id group by contract.customer_id order by counter desc limit 1;

Рисунок 13 – Результат выполнения запроса 6

Запрос 7 выводит среднюю выручку с договоров у каждого агента. Запрос представлен в листинге 8, а результат выполнения на рисунке 14.

Листинг 8 – Запрос 7

select agent.agent_lastname as AgentName, sum(contract.contract_price*agent.agent_percent/100)/count(contract.agent_id) as Average from contract, agent where contract.agent_id = agent.agent_id group by agent.agent_lastname;

Рисунок 14 – Результат выполнения запроса 7

Запрос 8 выводит информацию о том, сколько в среднем отдавала каждая организация за свои рекламы. Запрос представлен в листинге 9, а результат выполнения на рисунке 15.

Листинг 9 – Запрос 8

select customer.customer_contactperson as ContactPerson, sum(contract.contract_price)/count(contract.contract_price) as Average from customer, contract where contract.customer_id = customer.customer_id group by contract.customer_id;

Рисунок 15 – Результат выполнения запрос 8

Запрос 9 подсчитывает количество рекламных записей у передач с каждым рейтингом. Запрос представлен в листинге 10, а результат выполнения на рисунке 16.

Листинг 10 – Запрос 9

select tv_show.tv_rating as Rating, count(contract.tv_id) as Counter from tv_show, contract where contract.tv_id = tv_show.tv_id group by contract.tv_id;

Рисунок 16 – Результат выполнения запроса 9

Запрос 10 выводит список контактных лиц организаций, не заключивших ни одного договора на рекламу. Запрос представлен в листинге 11, а результат выполнения на рисунке 17.

Листинг 11 – Запрос 10

select customer.customer_contactperson as ContactPerson from customer, contract where customer.customer_id != contract.customer_id group by customer.customer_id;

Рисунок 17 – Результат выполнения запроса 10