- •Введение
- •1 Анализ предметной области
- •2 Составление требуемых запросов к базе данных
- •3 Анализ разрешений и запретов на операции с табличными данными для различных пользователей
- •4 Проектирование пользовательского интерфейса
- •5 Обработка и визуализация данных
- •Заключение
- •Список использованных источников
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
