Загрузка данных


-- 6. Сотрудники, у которых не менее 5 территорий

SELECT employee_id, COUNT(*) AS territory_count
FROM employee_territories
GROUP BY employee_id
HAVING COUNT(*) >= 5
ORDER BY territory_count DESC, employee_id;


-- 7. Товары, которые встречаются не менее 25 раз,
-- и среднее количество которых больше 20

SELECT product_id,
       COUNT(*) AS row_count,
       AVG(quantity) AS average_quantity
FROM order_details
GROUP BY product_id
HAVING COUNT(*) >= 25
   AND AVG(quantity) > 20
ORDER BY row_count DESC, average_quantity DESC;


-- 8. Общий список компаний из shippers и suppliers

SELECT company_name
FROM shippers

UNION

SELECT company_name
FROM suppliers

ORDER BY company_name;


-- 9. Города сотрудников, которые встречаются среди территорий

SELECT city
FROM employees
INTERSECT
SELECT territory_description
FROM territories
ORDER BY city;


-- 10. Территории, которых нет среди городов сотрудников

SELECT territory_description
FROM territories

EXCEPT

SELECT city
FROM employees

ORDER BY territory_description;


-- 11. Общий список телефонов без NULL и повторов

SELECT phone
FROM shippers
WHERE phone IS NOT NULL

UNION

SELECT phone
FROM suppliers
WHERE phone IS NOT NULL

ORDER BY phone;


-- 12. Заказы с минимум 4 позициями
-- и средней скидкой больше 0.10

SELECT order_id,
       COUNT(*) AS position_count,
       AVG(discount) AS average_discount
FROM order_details
GROUP BY order_id
HAVING COUNT(*) >= 4
   AND AVG(discount) > 0.10
ORDER BY average_discount DESC, order_id;