Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР-1

.docx
Скачиваний:
3
Добавлен:
23.12.2022
Размер:
523.54 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени

Федеральное государственное бюджетное образовательное учреждение высшего образования

Кафедра «Математическая кибернетики и информационные технологии»

Отчёт по лабораторной работе №1

по дисциплине «Математические методы в больших данных» на тему:

«Простейшие запросы»

Выполнили: студенты БСТ****

Проверила: Пугачёва Мария Алексеевна

Москва 2021

Оглавление

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации 1

Ордена Трудового Красного Знамени 1

Федеральное государственное бюджетное образовательное учреждение высшего образования 1

Кафедра «Математическая кибернетики и информационные технологии» 1

Отчёт по лабораторной работе №1 1

по дисциплине «Математические методы в больших данных» на тему: 1

«Простейшие запросы» 1

1

1

Выполнили: студенты БСТ**** 1

1

Проверила: Пугачёва Мария Алексеевна 1

1

Москва 2021 1

Оглавление 1

1. Установить MySQL. Можно вместе со средой или использовать альтернативы DBeaver/DataGrip. 4

2. Запустить dump-файл для создания и заполнения базы 4

3. Придумать запросы в соответствии со структурой базы и реализовать их: 4

4 запроса по одной таблице 4

3 запроса на join двух таблиц 4

2 запроса на join 2х и более таблиц 4

2 запроса с использованием вложенных запросов 4

Результаты работы зафиксировать в формате отчета со скриншотами работы. Желательно, продемонстрировать работы на своем ПК. 4

В качестве рабочей среды использована MySQL Workbench 5

​ Запросы по одной таблице 5

​ Запрос 1 - получение всех книг с указанием автора 5

SELECT title,author FROM books; 5

5

​ Запрос 2 - получение должностей работников с зарплатой от 60 000 5

SELECT DISTINCT position FROM employees WHERE salary >= 60000; 5

5

​ Запрос 3 - получение всех поставщиков, с которыми работали до 2020 года 6

SELECT DISTINCT supplier FROM test_database.supplies WHERE date < DATE("2020-01-01"); 6

6

​ Запрос 4 - получение кол-ва книг у каждого автора 6

SELECT author, COUNT(author) FROM books GROUP BY author; 6

6

​ Запросы на join двух таблиц 6

​ Запрос 1 - получение имён клиентов в заказах с указанием адреса доставки 6

SELECT clients.full_name, orders.delivery_address FROM clients INNER JOIN orders ON (clients.id = orders.clients_id); 6

7

​ Запрос 2 - получение названий всех имеющихся на складах книг 7

SELECT DISTINCT books.title FROM books INNER JOIN spaces_has_books ON (books.ISBN = spaces_has_books.books_ISBN) WHERE spaces_has_books.count_in_space > 0; 7

7

​ Запрос 3 - получение имён и должностей работников, которые исполняли заказы в 2019 году 7

SELECT DISTINCT employees.full_name,employees.position FROM employees INNER JOIN orders ON (employees.id = orders.employees_id) WHERE orders.delivery_date RLIKE "^2020-"; 7

8

​ Запросы на join двух и более таблиц 8

​ Запрос 1 - получение имён клиентов и работников в заказах с указанием адреса доставки и стоимости заказа 8

SELECT employees.full_name as "Работник", clients.full_name as "Клиент", orders.delivery_address, orders.total_price FROM clients INNER JOIN orders ON (clients.id = orders.clients_id) INNER JOIN employees ON (employees.id = orders.employees_id); 8

8

​ Запрос 2 - получение имён работников, адресов складов в запросах с указанием дат запроса и его выполнения 8

SELECT employees.full_name, spaces.address, requests.request_date, requests.complete_date FROM employees INNER JOIN employees_has_requests ON (employees.id = employees_has_requests.employees_id) INNER JOIN requests ON (requests.id = employees_has_requests.requests_id) INNER JOIN spaces ON (spaces.id = requests.spaces_id); 8

9

​ Запросы с использованием вложенных запросов 9

​ Запрос 1 - получение названий книг, которые были заказаны с ценой более 500 рублей 9

SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.position_cost/books_has_orders.book_count > 500); 9

9

​ Запрос 2 - получение названий книг, которые заказывали в 2020 году 9

SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.orders_id IN (SELECT orders.id FROM orders WHERE orders.order_date RLIKE "^2020")); 9

10

Мною было освоено использование запросов SELECT в запросе данных из одной таблицы, из нескольких с помощью оператора JOIN, а также вложенные запросы. 11

  1. Задание

  1. Установить MySQL. Можно вместе со средой или использовать альтернативы DBeaver/DataGrip.

  2. Запустить dump-файл для создания и заполнения базы

  3. Придумать запросы в соответствии со структурой базы и реализовать их:

  • 4 запроса по одной таблице

  • 3 запроса на join двух таблиц

  • 2 запроса на join 2х и более таблиц

  • 2 запроса с использованием вложенных запросов

Результаты работы зафиксировать в формате отчета со скриншотами работы. Желательно, продемонстрировать работы на своем ПК.

  1. Выполнение работы

В качестве рабочей среды использована MySQL Workbench

    1. Запросы по одной таблице

      1. Запрос 1 - получение всех книг с указанием автора

SELECT title,author FROM books;

      1. Запрос 2 - получение должностей работников с зарплатой от 60 000

SELECT DISTINCT position FROM employees WHERE salary >= 60000;

      1. Запрос 3 - получение всех поставщиков, с которыми работали до 2020 года

SELECT DISTINCT supplier FROM test_database.supplies WHERE date < DATE("2020-01-01");

      1. Запрос 4 - получение кол-ва книг у каждого автора

SELECT author, COUNT(author) FROM books GROUP BY author;

    1. Запросы на join двух таблиц

      1. Запрос 1 - получение имён клиентов в заказах с указанием адреса доставки

SELECT clients.full_name, orders.delivery_address FROM clients INNER JOIN orders ON (clients.id = orders.clients_id);

      1. Запрос 2 - получение названий всех имеющихся на складах книг

SELECT DISTINCT books.title FROM books INNER JOIN spaces_has_books ON (books.ISBN = spaces_has_books.books_ISBN) WHERE spaces_has_books.count_in_space > 0;

      1. Запрос 3 - получение имён и должностей работников, которые исполняли заказы в 2019 году

SELECT DISTINCT employees.full_name,employees.position FROM employees INNER JOIN orders ON (employees.id = orders.employees_id) WHERE orders.delivery_date RLIKE "^2020-";

    1. Запросы на join двух и более таблиц

      1. Запрос 1 - получение имён клиентов и работников в заказах с указанием адреса доставки и стоимости заказа

SELECT employees.full_name as "Работник", clients.full_name as "Клиент", orders.delivery_address, orders.total_price FROM clients INNER JOIN orders ON (clients.id = orders.clients_id) INNER JOIN employees ON (employees.id = orders.employees_id);

      1. Запрос 2 - получение имён работников, адресов складов в запросах с указанием дат запроса и его выполнения

SELECT employees.full_name, spaces.address, requests.request_date, requests.complete_date FROM employees INNER JOIN employees_has_requests ON (employees.id = employees_has_requests.employees_id) INNER JOIN requests ON (requests.id = employees_has_requests.requests_id) INNER JOIN spaces ON (spaces.id = requests.spaces_id);

    1. Запросы с использованием вложенных запросов

      1. Запрос 1 - получение названий книг, которые были заказаны с ценой более 500 рублей

SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.position_cost/books_has_orders.book_count > 500);

      1. Запрос 2 - получение названий книг, которые заказывали в 2020 году

SELECT books.title FROM books WHERE books.ISBN IN (SELECT books_has_orders.books_ISBN FROM books_has_orders WHERE books_has_orders.orders_id IN (SELECT orders.id FROM orders WHERE orders.order_date RLIKE "^2020"));

  1. Вывод

Мною было освоено использование запросов SELECT в запросе данных из одной таблицы, из нескольких с помощью оператора JOIN, а также вложенные запросы.

Соседние файлы в предмете Большие данные