отчет. Отчет По дисциплине "Базы данных" Студент гр. Бис1902 Е. Р. Тимохина
Скачать 1.44 Mb.
|
Лабораторная работа №3Заполнить таблицы данными (в каждой таблице-справочнике не менее 3 записей, в остальных таблицах не менее 5) Приложение 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 договор рисунок 10 select avg(t.num) from (select count(fromContracts_id) as 'num' from Neworder group by fromContracts_id) as t; Рисунок 10 - среднее число заказов на 1 договор Вывести список не выполненных на текущую дату заказов рисунок 11 select articule, status, end_date from Neworder where end_date is null; Рисунок 11 - список не выполненных на текущую дату заказов Вывести список заказов, не отправленных заказчику рисунок 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 - список заказов, не отправленных заказчику Определить заказы, в которые не входит ни одной доставки рисунок 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 - заказы, в которые не входит ни одной доставки Определить 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 наиболее продаваемых товаров и самый популярный вид нанесения Вывести 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 самых эффективных сотрудников компании (по сумме полученных заказов) |