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
    );