Вы находитесь на странице: 1из 4

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

1. Определить имена и фамилии менеджеров, сотрудники которых продавали


Настольные лампы.
a)
select distinct s2.sp_name from product p, sale s , sperson s1, sperson s2
where p.p_desc='Desc lamp' and p.p_id=s.p_id and s1.sp_id=s.sp_id and
s1.man_id=s2.sp_id

b)
select distinct s2.sp_name from sperson s2 join sperson s1 on s1.man_id=s2.sp_id
join sale s on s1.sp_id=s.sp_id join product p on p.p_id=s.p_id
where p.p_desc='Desc lamp';

c) select sp_name from sperson where sp_id in


(select man_id from sperson where sp_id in
(select sp_id from sale where p_id in
(select p_id from product where p_desc = 'Desc lamp')));

2. Вывести в одну таблицу данные о всех сотрудниках и продажах (имя и фамилия,


название региона, комиссионные, дата, название товара, количество проданного
товара).

select sp.sp_name, o.office, sp.comm, s.data, p.p_desc, s.qty


from office o right join sperson sp on sp.of_id=o.of_id
and from sale s right join sperson sp on sp.sp_id=s.sp_id
and from product p right join sale s on s.p_id=p.p_id order by 1;

select sp.sp_name, o.office


from office o right join sperson sp on sp.of_id=o.of_id ;

select sp.sp_name, sp.comm, s.data, s.qty


from sale s right join sperson sp on sp.sp_id=s.sp_id ;

select s.data, p.p_desc, s.qty


from product p right join sale s on s.p_id=p.p_id order by 1;

3. Определить имена и фамилии менеджеров, сотрудники которых продавали товары,


произведенные фирмой Лампы Лама.

select sp_name from sperson where sp_id in


(select man_id from sperson where sp_id in
(select sp_id from sale where p_id in
(select p_id from product where m_id=
(select m_id from manufact
where m_name='Lampy Lama'))));

4. Определить имена и фамилии менеджеров, сотрудники которых продавали товары,


произведенные в Перу.

a) select distinct s1.sp_name


from country cn, manufact m, product p,
sale sa, sperson s1, sperson s2
where cn.country='Peru' and
cn.cn_id=m.cn_id and
m.m_id=p.m_id and
p.p_id=sa.p_id and
sa.sp_id=s2.sp_id and
s1.man_id=s2.sp_id;

b)
select distinct s1.sp_name
from sperson s1 join sperson s2
on s1.man_id=s2.sp_id join sale sa
on sa.sp_id=s2.sp_id join product p
on p.p_id=sa.p_id join manufact m
on m.m_id=p.m_id join country cn
on cn.cn_id=m.cn_id
where cn.country='Peru' ;

c) select sp_name from sperson where man_id in


(select sp_id from sperson where sp_id in
(select sp_id from sale where p_id in
(select p_id from product where m_id =
(select m_id from manufact where cn_id=
(select cn_id from country
where country='Peru')))));

5. Определить имена и фамилии сотрудников, менеджеры которых продавали товары


из Нигерии.
select distinct s1.sp_name
from country cn, manufact m, product p,
sale sa, sperson s1, sperson s2
where cn.country='Nigeria' and
cn.cn_id=m.cn_id and
m.m_id=p.m_id and
p.p_id=sa.p_id and
sa.sp_id=s2.sp_id and
s1.man_id=s2.sp_id;

6. Определить имена и фамилии сотрудников, менеджеры которых работают в


Чикаго.
select sp_name from sperson where man_id in
(select sp_id from sperson where of_id in
(select of_id from office
.where office='Chicago'));

7. Определить имена и фамилии менеджеров, сотрудники которых продавали


Настольные лампы клиентам из Японии.

select sp_name from sperson


where sp_id in (select man_id from sperson
where sp_id in(select sp_id from sale
where c_id in(select c_id from customer
where cn_id =(select cn_id from country where country='Japan'))
and p_id in(select p_id from product where p_desc = 'Desc lamp')));

8. Отсортировать записи в таблице SPERSON в обратном порядке кодов офисов.

select * from sperson order by of_id desc;

9. Отсортировать записи в таблице SPERSON следующим образом:


коды офисов установить в возрастающем порядке; для одинаковых офисов
фамилии сотрудников вывести в обратном алфавитном порядке.

select * from sperson


where of_id=of_id
order by of_id asc,sp_name desc ;

10. Посчитать количество сотрудников, работающих в каждом регионе.

select o.of_id, o.office, count(sp_id)


from office o, sperson sp
where o.of_id=sp.of_id
group by o.office, o.of_id
order by 1
11. Определить максимальный и минимальный процент комиссионных сотрудников в
каждом регионе.

select o.of_id, o.office, max(sp.comm) max_comm, min(sp.comm) min_comm


from office o, sperson sp
where o.of_id=sp.of_id
group by o.office, o.of_id
order by 1

12. Определить максимальный и минимальный процент комиссионных сотрудников,


работающих в Токио, Брюсселе и в Чикаго (Tokyo, Brussel, Chicago).

select o.of_id, o.office, max(sp.comm) max_comm, min(sp.comm) min_comm


from office o, sperson sp
where o.of_id=sp.of_id and office in('Chicago','Brussel','Tokyo')
group by o.office, o.of_id
order by 1

select o.of_id, o.office, max(sp.comm) max_comm, min(sp.comm) min_comm


from office o, sperson sp
where o.of_id=sp.of_id and office in('Chicago','Bruxelles','Tokyo')
group by o.office, o.of_id
order by 1

13. Определить средний процент комиссионных для всех регионов за исключением


Токио (Tokyo). В результирующей таблице отобразить только те регионы, для
которых средний процент комиссионных >11%.

select o.of_id, o.office, max(sp.comm) max_comm, min(sp.comm) min_comm


from office o, sperson sp
where o.of_id=sp.of_id and office not in('Tokyo')
group by o.office, o.of_id
having avg(sp.comm)<=11
order by 1

14. Определить среднюю, минимальную и максимальную закупочную стоимость


Настольных ламп (Desc lamp).

select p.p_desc, avg(cost)avg_cost, min(cost) min_cost, max(cost) max_cost


from product p
where p.p_desc='Desc lamp'
group by p.p_desc,p.cost
order by 1;

15. Посчитать количество сотрудников, работающих в каждом регионе. В


результирующей таблице отобразить только те регионы, в которых работает более
двух сотрудников.

select o.of_id, o.office, count(sp_id)


from office o, sperson sp
where o.of_id=sp.of_id
group by o.office, o.of_id
having count(sp_id)>2
order by 1