Занятие 25. Подзапросы
⚡ Кратко: примеры
- Заказы клиентов из Лос-Анджелеса.
- Топ-10 продуктов по количеству заказов.
- Строки дороже средней цены.
- Заказы Sales Representative.
💻 Рабочие примеры
Пример 1. Заказы клиентов из города
USE northwind;
SELECT *
FROM orders
WHERE customer_id IN (
SELECT id FROM customers WHERE city = 'Los Angeles'
);
Подзапрос находит идентификаторы клиентов, внешний запрос — их заказы.
Пример 2. Топ-10 продуктов по заказам и выручке
USE northwind;
SELECT p.product_name, ps.total_orders, ps.total_revenue
FROM (
SELECT product_id,
COUNT(*) AS total_orders,
SUM(unit_price * quantity) AS total_revenue
FROM order_details
GROUP BY product_id
) AS ps
JOIN products AS p ON ps.product_id = p.id
ORDER BY ps.total_orders DESC
LIMIT 10;
Подзапрос в FROM агрегирует данные; внешний запрос добавляет названия продуктов.
Пример 3. Строки дороже средней цены
USE northwind;
SELECT *
FROM order_details
WHERE unit_price > (
SELECT AVG(unit_price) FROM order_details
);
Скалярный подзапрос возвращает среднее значение, с которым сравнивается каждая строка.
Пример 4. Заказы сотрудников с конкретной должностью
USE northwind;
SELECT *
FROM orders
WHERE employee_id IN (
SELECT id FROM employees WHERE job_title = 'Sales Representative'
);
Многострочный подзапрос возвращает список id сотрудников; внешний запрос фильтрует заказы через IN.