Занятие 25. Подзапросы
⚡ Кратко: домашнее задание
- Клиенты, сделавшие более 5 заказов.
- Продукты, ни разу не заказанные.
- Средняя выручка по категориям продуктов.
🏠 Домашнее задание
Все задания выполняются в базе northwind.
Задание 1. Клиенты с большим количеством заказов
Выведите имена и фамилии клиентов, которые сделали более 5 заказов.
USE northwind;
SELECT first_name, last_name
FROM customers
WHERE id IN (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 5
);
Задание 2. Продукты без заказов
Найдите продукты, которые ни разу не попадали в order_details.
USE northwind;
SELECT id, product_name
FROM products
WHERE id NOT IN (
SELECT DISTINCT product_id FROM order_details
);
Примечание: альтернатива — LEFT JOIN ... IS NULL или NOT EXISTS. В продакшене NOT EXISTS часто предпочтительнее из-за обработки NULL.
Задание 3. Средняя выручка по категориям
Для каждой категории продуктов выведите среднюю выручку по строкам order_details. Используйте подзапрос в FROM.
USE northwind;
SELECT c.category_name, AVG(od.revenue) AS avg_revenue
FROM (
SELECT product_id, unit_price * quantity AS revenue
FROM order_details
) AS od
JOIN products AS p ON od.product_id = p.id
JOIN categories AS c ON p.category_id = c.id
GROUP BY c.category_name;
Проверить по документации: точные имена таблиц и столбцов в схеме northwind могут отличаться. Адаптируйте запрос под реальные названия.