Главная страница

отчет. Отчет По дисциплине "Базы данных" Студент гр. Бис1902 Е. Р. Тимохина


Скачать 1.44 Mb.
НазваниеОтчет По дисциплине "Базы данных" Студент гр. Бис1902 Е. Р. Тимохина
Анкоротчет
Дата14.06.2022
Размер1.44 Mb.
Формат файлаdocx
Имя файлаOTChET_BD_33.docx
ТипОтчет
#590769
страница3 из 7
1   2   3   4   5   6   7

Лабораторная работа №3




  1. Заполнить таблицы данными (в каждой таблице-справочнике не менее 3 записей, в остальных таблицах не менее 5) Приложение 1 – содержание БД на момент выполнения всех лабораторных работ.



  1. Вывести список компаний, заключивших договоры в последние полгода и сделавших не менее 3- х заказов рисунок 9.

select l.name, count(*) from client as l join contracts as ct on (l.id_client = ct.fromClient_id)

join Neworder as o on (ct.id_contract = o.fromContracts_id ) where month(CURRENT_DATE) - month(ct.start_date) <= 6 group by l.name HAVING COUNT(o.id_Neworder) > 2;



Рисунок 9 - список компаний, заключивших договоры в последние полгода и сделавших не менее 3- х заказов

  1. Определить среднее число заказов на 1 договор рисунок 10

select avg(t.num) from (select count(fromContracts_id) as 'num' from Neworder group by fromContracts_id) as t;



Рисунок 10 - среднее число заказов на 1 договор

  1. Вывести список не выполненных на текущую дату заказов рисунок 11

select articule, status, end_date from Neworder where end_date is null;



Рисунок 11 - список не выполненных на текущую дату заказов

  1. Вывести список заказов, не отправленных заказчику рисунок 12

select n.articule, n.status, d.date_sended from Neworder as n

join goods_in_Neworder as gio on (n.id_Neworder = gio.fromNeworder_id)

join delivery_list as dl on (gio.fromNeworder_id = dl.fromGoodsinNeworder_id)

join delivery as d on (d.id_delivery = dl.fromDelivery_id)

where d.date_sended is null;



Рисунок 12 - список заказов, не отправленных заказчику

  1. Определить заказы, в которые не входит ни одной доставки рисунок 13.

select n.articule, n.status, count(dl.fromDelivery_id) from Neworder as n

join goods_in_Neworder as gio on (n.id_Neworder = gio.fromNeworder_id)

join delivery_list as dl on (gio.fromNeworder_id = dl.fromGoodsinNeworder_id)

where count(dl.fromDelivery_id)==0 group by gio.fromNeworder_id ;



Рисунок 13 - заказы, в которые не входит ни одной доставки

  1. Определить 3 наиболее продаваемых товаров и самый популярный вид нанесения рисунок 14.

select * from (select g.name, count(*) from goods as g join goods_in_Neworder as gin on (g.id_good = gin.fromGoods_id) group by gin.fromGoods_id

order by count(*) desc limit 3) as top_goods

UNION

select * from (select d.name, count(*) from drawings as d join goods_in_Neworder as gin on (d.id_drawings = gin.fromDrawings_id)

group by fromDrawings_id having count(*) >= all (select count(*) from drawings as d join goods_in_Neworder as gin on (d.id_drawings = gin.fromDrawings_id)

group by fromDrawings_id)) as top_drawing;



Рисунок 14 - 3 наиболее продаваемых товаров и самый популярный вид нанесения

  1. Вывести 5 самых эффективных сотрудников компании (по сумме полученных заказов) рисунок 15.

select s.name, count(n.articule), sum(gin.application_price * gin.quantity) as suma from staff as s

join Neworder as n on (s.id_staff = n.fromContracts_id)

join goods_in_Neworder as gin on (n.id_Neworder = gin.fromNeworder_id) group by s.name order by suma desc limit 5;



Рисунок 15 - 5 самых эффективных сотрудников компании (по сумме полученных заказов)
1   2   3   4   5   6   7


написать администратору сайта