107 lines
3.5 KiB
SQL
107 lines
3.5 KiB
SQL
use OrdersDB_2;
|
||
|
||
##################### Завдання #######################
|
||
##########################################################
|
||
################### Завдання 1.1 #####################
|
||
Знайдіть максимальну і мінімальну середню суму угоди на основі середньої суми угод кожного продавця.
|
||
Підказка: використайте підзапит у пропозиції FROM.
|
||
|
||
select max(avg_amt), min(avg_amt)
|
||
from (
|
||
select avg(amt) as avg_amt
|
||
from Orders
|
||
group by
|
||
SNUM
|
||
) as avg_amt;
|
||
|
||
######################################################
|
||
################# Завдання 1.2 ###################
|
||
|
||
Напишіть запит, що виведе кожне замовлення покупців, якщо їх вартість більша за кожне замовлення
|
||
покупця Grass. Вивід здійснити у формі onum, amt, odate, cname.
|
||
Підказка: використайте оператор ALL
|
||
|
||
select onum, amt, odate, cname
|
||
from Orders o
|
||
join Customers c on o.cnum = c.cnum
|
||
where
|
||
amt > all (
|
||
select amt
|
||
from Orders
|
||
where
|
||
cnum = (
|
||
select cnum
|
||
from Customers
|
||
where
|
||
cname = 'Grass'
|
||
)
|
||
);
|
||
|
||
######################################################
|
||
################# Завдання 1.3 ###################
|
||
Виведіть усі замовлення для яких сума угоди перевершує хоча б якесь замолення,
|
||
що обслуговувалося продавцем Peel
|
||
Вивід здійсніть у формі amt, odate, cname, sname
|
||
|
||
select amt, odate, cname, sname
|
||
from
|
||
Orders o
|
||
join Customers c on o.cnum = c.cnum
|
||
join Salespeople s on o.snum = s.snum
|
||
where
|
||
amt > any (
|
||
select amt
|
||
from Orders
|
||
where
|
||
snum = (
|
||
select snum
|
||
from Salespeople
|
||
where
|
||
sname = 'Peel'
|
||
)
|
||
);
|
||
|
||
#####################################################
|
||
################ Завдання 1.4 ###################
|
||
Виведіть продавців серердня сума угод яких перевищує середню суму усіх угод.
|
||
У вивід включіть ім’я продавця та його середню суму угод
|
||
Підказка:
|
||
|
||
select sname, avg_amt
|
||
from Salespeople s
|
||
join (
|
||
select snum, avg(amt) as avg_amt
|
||
from Orders
|
||
group by
|
||
snum
|
||
) as avg_amt on s.snum = avg_amt.snum
|
||
where
|
||
avg_amt > (
|
||
select avg(amt)
|
||
from Orders
|
||
);
|
||
|
||
#####################################################
|
||
################ Завдання 1.5 ###################
|
||
Виведіть покупців, серердня сума угод яких перевищує середню суму усіх угод.
|
||
У вивід включіть ім’я покупця та його середню суму угод а також загальну середню суму угод.
|
||
Підказка:
|
||
|
||
select cname, avg_amt, round(
|
||
(
|
||
select avg(amt)
|
||
from Orders
|
||
), 2
|
||
) as avg_amt_all
|
||
from Customers c
|
||
join (
|
||
select cnum, avg(amt) as avg_amt
|
||
from Orders
|
||
group by
|
||
cnum
|
||
) as avg_cus on c.cnum = avg_cus.cnum
|
||
where
|
||
avg_amt > (
|
||
select avg(amt)
|
||
from Orders
|
||
); |