Files
sql_advanced/lab2-6/task1.sql
T
Vitalii Litvinchuk 6deed0469a first commit
2026-05-04 23:15:09 +03:00

107 lines
3.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
);